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都进行强制类型转换。
相关文章推荐
- JavaScript使用IEEE 标准进行二进制浮点运算产生莫名错误的解决方法
- JavaScript产生随机数并对数据进行简单的运算
- 浏览器兼容性问题,为什么同一段JavaScript代码,不同浏览器上为什么会产生不同效果,甚至bug?浏览器不就是严格按照JavaScript语法进行的吗?java代码为什么从来没听过有什么兼容问题?
- Python之产生泊松分布随机数,并进行矩阵的简单运算
- JavaScript使用IEEE 标准进行二进制浮点运算产生莫名错误的解决方法
- 无符号数进行运算不可能产生负数!
- 使用原生的javascript进行字符的四则运算。
- shell 如何进行 float 浮点数运算
- R语言--在R语言中进行集合运算
- JS浮点书的运算的BUG的处理办法
- 使用异或运算对数据及文件进行加密处理,附软件及源码
- 在C/C++代码中使用SSE等指令集的指令(5)SSE进行加法运算简单的性能测试
- js或者php浮点数运算产生多位小数的理解
- C#实现突破位数限制,用字符串对较大的数进行运算
- 运算产生结果,还是运算影响结果。
- Oracle技术之如何对时间进行简单加减运算
- java代码从键盘输入次数,然后进行运算-----菜鸟如此菜
- 通过shell进行数学运算的多种方式
- CUDA 在 suse10.3下面的安装 (自己的安装过程,没有对其他的想法或可能存在的bug进行测试)
- 用BigDecimal代替double进行加减乘除的运算