最近在串口读取数据时,首先将一段串口指令封装到一个QByteArray中,然后使用crc16的算法算出一个数,可是使用byteArray的append方法添加这个数时,只添加了一部分。这是为什么?开始猜想QByteArray是字节数组,不能添加大于0xFF的数,然后,将crc16的返回值,除以0xFF
···
array.append(crcValue);
array.append(crcValue/0xFF);
···
可是输出的数据,会比原来的数小一个,而且不是每条数据都少。
eg:
错误数据:
QbyteArray:7E3011110000000042010101020202030303 HEX
uint crcValue: 25270 DEC
正确数据:
7E20111101011001841F
8068
格式同上。
为什么会这样呢?
后来上网搜了一下,改为这样添加数据就正确了。
···
array.append(crcValue/0x100);
array.append(crcValue%0x100);
···
正确是正确了,可是为什么?要除以一个0x100呢?我知道0x100是0xFF的加1操作,那为什么要+1呢?+1不是多除了吗?