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

本文介绍了一个UDP通讯数据解析过程中的问题及解决方案。作者在使用位或运算符进行数据拼接时遇到了bug,当bytearry[6]的最高位为1时,计算结果总是按照bytearray[5]为ff的值来计算,最终通过将每个bytearray元素进行强制类型转换解决了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值