2017-04-20 30 views
-1

所以,這是事情,我從藍牙傳輸接收1個字節。當使用QDebug我得到這個消息:QByteArray的1字節整型轉換如何失敗?

The array with error has "\x06" 

失敗行是這樣的:

bool ok = true; 
    int v = value.toInt(&ok,0); 

因爲okfalse。但我試圖圍繞這樣一個事實,即如果在該字節中表示的數據(作爲零和一個序列)始終具有有效的整數表示形式,那麼轉換如何首先失敗。 (一個字節總是可以表示爲-127到128之間的整數)。所以我留下了這個問題,轉換如何失敗?

閱讀文檔沒有提供很多線索,因爲它沒有說明如何解釋字節數組。

回答

0

QByteArray::toInt將默認C語言環境中的字符串表示轉換爲整數。這意味着要成功轉換您的示例中的值,您的字節數組必須包含字符串"0x06",它由4個字節組成。

一個字節,轉換爲int,只需將其解壓縮:

int i = value[0]; 

類型的推廣將擴大字符爲int

+0

確定。它不包含該字符串。它只是打印6的二進制表示,因爲這是QDebug打印它的方式。 – aarelovich