CSerialPort类如何对$de07021124000007*05协议进行解析?

CStringstrTemp;strTemp=m_strPortRXData.Mid(1,2);char*temp1=(char*)((LPCTSTR)strTemp);... CString strTemp;
strTemp=m_strPortRXData.Mid(1,2);
char *temp1=(char*)((LPCTSTR)strTemp);
char tbuf1[3];
tbuf1[0]=temp1[0];
tbuf1[1]=temp1[1];
tbuf1[2]=0;
m_strXhfgq=atoi(tbuf1);
我写得无法解析16进制数
我的显示是‘ ’ 7 2 11 24 00 00 00 7 但是上面发送的是16进制数
展开
 我来答
小白范
推荐于2016-02-24 · TA获得超过358个赞
知道小有建树答主
回答量:309
采纳率:50%
帮助的人:284万
展开全部
atoi函数是把字符串转换成十进制数,

如果要转换十六进制,需要自己写一个小函数,先把十六进制字符转换成半个字节的数:

BYTE CharToHalfHex(BYTE byChar)
{
if ((byChar >= '0') && (byChar <= '9'))

{

return byChar - '0';

}

if ((byChar >= 'A') && (byChar <= 'F'))

{

return byChar - 'A' + 10;

}

if ((byChar >= 'a') && (byChar <= 'f'))

{

return byChar - 'a' + 10;

}

return 0;

}

这个函数可以转换字符串中的一个字符。有了这个函数,就可以把相邻的两个字符转换成一个十六进制数了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式