您的位置:首页 > 其它

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

2014-10-11 09:23 330 查看
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