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都进行强制类型转换。