1

我对 QByteArray 数据感到困惑。有人可以为我解释以下情况。 在此处输入图像描述

这里每个数组索引的数据类型是 char。我理解其中的一些价值观。就像74 'J' 我理解的第一个是 ASCII 和第二个是相应的字符。但是什么意思-1 '\\377'

还有下面的gui是什么意思?我将上面的 QByteArray 发送到一个函数,该函数将 QByteArray 作为unsigned char* source. 下面的 gui 显示了 that 的值source在此处输入图像描述

主要令人困惑的部分是第一行的值0x87089e8 "\377\330\377\340"

4

2 回答 2

2

char在 C/C++ 中是有符号的1 字节整数。此 GUI 只是将该值表示为带符号的十进制数和等效的ASCII字符。

您在询问字节值 -1,可以通过以下方式解释:

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'
于 2013-01-14T06:19:45.117 回答
2

我正在回答 的含义0x87089e8 "\377\330\377\340"

0x87089e8source指针的值,即它是内存中的地址。"\377\330\377\340"是存储在该地址的字符串,写为八进制转义序列。之所以这样写,是因为这些字符都不是 ASCII(ASCII 仅从 0 到 127)。在十六进制中,字节串是ff d8 ff e0 00. 00末尾的 被解释为字符串结束标记(ASCII NULL)。

于 2013-01-14T12:35:19.950 回答