QByteArray的at誤導了我

2021-10-21 20:15:59 字數 833 閱讀 7419

...

qbytearray info = m_serialport->

readall()

;...

uint8_t bytelow, bytehigh, crc16low, crc16high;

uint16_t crc16 =

chkcrc

(pchardata,6)

;crc16low =

(unsigned

char

)(crc16 &

0xff);

//校驗位低8位

crc16high =

(unsigned

char)(

(crc16 >>8)

&0xff);

//校驗位高8位

if(crc16high == info.at(

6)&& crc16low == info.at(7))

上面直接把接收到的串列埠資料跟校驗後的結果比較,上面的if始終是false,按照vc++的經驗,at取出來的應該也是無符號的位元組資料呀,怎麼就是不對呢?

後來檢視一下at函式,發現了:

返回的竟然是char型,學習了,下面強轉一下就可以了。

if

(crc16high ==

(uint8_t)info.at(

6)&& crc16low ==

(uint8_t)info.at(7))

Qt 深受QByteArray的陷害

這兩天在維護以前寫的乙個服務端軟體,這軟體使用qt開發的。除錯了2天,終於找到了答案。原因正是我太相信qt的介面,qbytearray類提供了轉換成char 的介面,可以這麼轉換 qbytearray arr arr.tolatin1 data 中斷一下,以前在使用arr.toascii data ...

啟蒙老師的誤導

你的啟蒙老師應該也是這樣教你的吧?考試的時候要慢慢得答,不要圖快。不僅你的啟蒙老師會這樣,你初次步入職場的時候也會有經驗者來這樣教導你。慢工出細活。如果你已經根深蒂固的接受這個觀點超過25年,那麼基本上你一定認為這是正確的。而很難通過一篇博文就讓你轉變看法。並且在這期間,你一定嚐到很多甜頭 並因此對...

QByteArray常用型別轉換

在使用qt串列埠時,經常會進行qbytearray相關的轉換。uchar轉換為qbytearray型別方法 qbytearray sbuf qbytearray fromrawdata char buf,sizeof buf qbytearray轉換為uchar型別方法 1.使用reinterpre...