不知道为什么16进制转不出10进制的代码,急需解答,明天老师要看!

酱油阿叔 2014-04-20 03:30:28
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048]; //设置BYTE数组 An 8-bit ntegerthat is not signed.
CString strtemp;
CString strDec, strHex;
if(m_comm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符
{ ////////以下你可以根据自己的通信协议加入处理代码
variant_inp=m_comm.GetInput(); //读缓冲区
safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组
for(k=0;k<len;k++) //将数组转换为Cstring型变量
{
BYTE bt=*(char*)(rxdata+k); //字符型
strtemp.Format("%02X ",bt); //将字符以十六进制方式送入临时变量strtemp存放,注意这里加入一个空隔
m_strTXData+=strtemp;//加入接收编辑框对应字符串
strHex=_T(strtemp);
DWORD dwHex=strtoul(strHex,NULL,16);
strDec.Format(_T("%ld"),dwHex);
m_strTOten+=strDec;

}

m_strTXData = m_strTXData+"\r\n";//换行
m_strTOten = m_strTOten+"\r\n";
m_cShow.ResetContent();//清空前次数据
m_cShow.AddString(m_strTXData);//在列表框实现数据的记录
}


UpdateData(FALSE);
是关于串口的一个程序,请求帮忙看看为什么输出不了十进制的数,谢谢!
...全文
105 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
buyong 2014-04-20
  • 打赏
  • 举报
回复
单步调试,估计是printf的参数不对

65,207

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧