QbyteArray的小bug(进行位或运算产生的)!

DO = quint8(bytearray[5])*256+quint8(bytearray[6]);
    //DO = bytearray[5]<<8|bytearray[6]; 这种形式不可以使用,每次bytearry[6]最高位为1时,都会使得DO的计算值不对。


这是我正在做的一个项目的代码。


bytearray是我从udp通讯接收的数据。DO的数据类型为quint16,一开始使用注释的那种,发现一种现象,每次bytearry[6]的最高位为1时,不管bytearray[5]的值为多少,其计算

结果都是按照bytearray[5]为ff的值计算的,导致计算结果不对。本身bytearray就是Qbyte类型了,很原始了,使用位或应该是可以的,但遇到这样的问题。


解决方法就是将每个bytearray都进行强制类型转换。

你可能感兴趣的:(bug,bytearray)