• 4159阅读
  • 1回复

[提问]QByteArray 如何在后面添加一个大于0xFF的unit的数 [复制链接]

上一主题 下一主题
离线misgn
 

只看楼主 倒序阅读 楼主  发表于: 2016-11-16
关键词: QByteArrayQT4
最近在串口读取数据时,首先将一段串口指令封装到一个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不是多除了吗?
离线bran_lee

只看该作者 1楼 发表于: 2016-11-16
crcValue/0x100是取高位,crcValue%0x100是取低位吧,把一个数拆成两份而已
当你只有锤子时,你看什么都像是钉子!
快速回复
限100 字节
 
上一个 下一个