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,
转载请注明原文地址: https://www.6miu.com/read-42999.html