QByteArray数据格式说明

时间:2013-01-14 06:03:21

标签: c++ c char ascii qbytearray

我对QByteArray数据感到困惑。有人可以帮我解释下面的情景。 enter image description here

这里每个数组索引的数据类型都是char。我理解其中的一些价值观。像74 'J'一样 我知道第一个是ASCII,第二个是相应的字符。但-1 '\\377'

的含义是什么?

下面的gui是什么意思?我将上面的QByteArray发送到一个将QByteArray作为unsigned char* source的函数。下面的gui显示了source的值。 enter image description here

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

2 个答案:

答案 0 :(得分:2)

C / C ++中的

char是一个签名的 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'

答案 1 :(得分:2)

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

0x87089e8source指针的值,即它是一个地址 在记忆中。 "\377\330\377\340"是存储在其中的字符串 地址,写成八进制转义序列。这是用这种方式写的 因为这些字符都不是ASCII(ASCII只从0到 127)。在十六进制中,字节串为ff d8 ff e0 00。最后00 被解释为和字符串结束标记(ASCII NULL)。