簡體   English   中英

在Qt中解析Asterix,為什么需要類型轉換?

[英]Parsing Asterix in Qt, why do I need type conversion?

我目前正在為Asterix Cat 240(用於傳輸雷達視頻數據的開放標准)編寫一個解析器,它可以正常工作,但是我不知道,為什么我需要類型轉換?

rawAsterix.videoHR = static_cast<quint8>(buffer->at(i));
rawAsterix.videoHR = (rawAsterix.videoHR << 8) + static_cast<quint8>(buffer->at(i+1));
rawAsterix.videoHR = (rawAsterix.videoHR << 8) + static_cast<quint8>(buffer->at(i+2));
rawAsterix.videoHR = (rawAsterix.videoHR << 8) + static_cast<quint8>(buffer->at(i+3));
i+=4

緩沖區是一個QByteArray ,保留由QUdpSocket接收的數據。 最初,我沒有類型轉換的願望(有時不是每次)都導致奇怪的行為。 為什么會這樣?

QByteArray::at()返回char 並且此char的static_cast<quint8>返回unsigned char 似乎在這段代碼中,您需要無符號值。

實際上,該標准沒有指定普通char是帶符號的還是未簽名的(請參閱默認情況下 char是帶符號的還是未簽名的? )。 但是,如果需要確保添加無符號值,則需要在此處使用static_cast<quint8>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM