2013-01-14 202 views
1

我對QByteArray數據感到困惑。有人可以爲我解釋下面的情況。 enter image description hereQByteArray數據格式說明

這裏每個數組索引的數據類型都是char。我明白其中的一些價值。像74 'J' 我明白第一個是ASCII,第二個是相應的字符。但是什麼意思-1 '\\377'

下面的gui是什麼意思?我將上面的QByteArray發送到一個函數,該函數將QByteArray作爲unsigned char* source。下面的gui顯示了source的值。 enter image description here

主要混淆的部分是在C/C的第一行的值0x87089e8 "\377\330\377\340"

+1

如果您告訴我們您存儲在裏面,它會有所幫助。 –

+0

該數據包含一個包含jpeg圖像的網絡請求回覆。謝謝。 – Tahlil

回答

2

char ++是簽署 1字節的整數。該GUI僅將該值表示爲帶符號的十進制數字,以及等效的ASCII字符。

你問的是字節值-1,這可以通過以下方式來interpretted:

Binary  11111111 
Octal  0377 
Hex  0xFF 
Decimal -1 (Signed) 
      255 (Unsigned) 

ASCII  \377 
      \xFF 

注意這裏不是255標準可打印的ASCII字符,這就是爲什麼他們表現它像他們一樣。

又如:

Binary     01001010 
Octal      0112 
Hex        0x4A 
Decimal    74    (Signed) 
           74   (Unsigned) 
ASCII      'J' 
+0

嗨,我明白你解釋得很好的部分。謝謝。我在這個問題中增加了另一部分。你能回答嗎?謝謝。 – Tahlil

2

我回答有關的0x87089e8 "\377\330\377\340"意義。

0x87089e8source指針的值,即它是內存中的地址 。 "\377\330\377\340"是存儲在 地址處的字符串,寫爲八進制轉義序列。它是這樣寫的 ,因爲這些字符都不是ASCII(ASCII只從0到 127)。十六進制中,字節串是ff d8 ff e0 00。將00末尾的 解釋爲字符串結尾標記(ASCII NULL)。

+0

感謝您的解釋:) – Tahlil