我对QByteArray数据感到困惑。有人可以帮我解释下面的情景。
这里每个数组索引的数据类型都是char。我理解其中的一些价值观。像74 'J'
一样
我知道第一个是ASCII,第二个是相应的字符。但-1 '\\377'
下面的gui是什么意思?我将上面的QByteArray发送到一个将QByteArray作为unsigned char* source
的函数。下面的gui显示了source
的值。
主要的混淆部分是第一行的值0x87089e8 "\377\330\377\340"
答案 0 :(得分:2)
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"
的含义。
0x87089e8
是source
指针的值,即它是一个地址
在记忆中。 "\377\330\377\340"
是存储在其中的字符串
地址,写成八进制转义序列。这是用这种方式写的
因为这些字符都不是ASCII(ASCII只从0到
127)。在十六进制中,字节串为ff d8 ff e0 00
。最后00
被解释为和字符串结束标记(ASCII NULL)。