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都進行強制類型轉換。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章