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