C++如何将2个BYTE数据转化为1个BYTE

来源:互联网 发布:达内java培训北京校区 编辑:程序博客网 时间:2024/06/08 12:14
C++如何将2个BYTE数据转化为1个BYTE


在解析串口读取数据的时候遇到这个问题:“从串口读取数据中取两个BYTE,但是目标是将这两个BYTE转化为一个BYTE,如:0x01 0x02 -> 0x12”。
其实转化思路很简单:将0x01 << 4 + 0x02 --> 0x12,即将高位BYTE左移4位在加上(或“位或上”)低位的BYTE,就得到想要的数据了。
但是,当串口读取到的是ASCII的形式,如0x31 0x32 ,这时想要转化为0x12,上面那种方法就不行。其实转化起来也很方便,即需要多转化一次,就是将ASCII形式的数据转化为上例中的HEX形式的数据,然后再进行合并即可。
下面给出一个转化函数:
BYTE ConvertHexChar(BYTE ch)
{
if((ch>='0')&&(ch<='9'))
return ch-0x30;
else if((ch>='A')&&(ch<='F'))
return ch-'A'+10;
else if((ch>='a')&&(ch<='f'))
return ch-'a'+10;        
else
return -1;
}

通过这个函数,上例中的0x31、0x32 分别出来是 0x01、0x02,
原创粉丝点击