Я запутался в данных QByteArray. Может кто-нибудь объяснить, пожалуйста, сценарий ниже для меня.
Здесь тип данных для каждого индекса массива — char. Я понимаю некоторые из этих ценностей. подобно 74 'J'
Я понимаю, что первый — ASCII, а второй — соответствующий символ. Но в чем смысл -1 '\\377'
Также, что означает нижеприведенный графический интерфейс? Я послал QByteArray выше в функцию, которая принимает QByteArray как unsigned char* source
, Нижеследующий графический интерфейс показывает значение этого source
,
Основной сбивающей с толку частью является значение первой строки 0x87089e8 "\377\330\377\340"
char
в C / C ++ это подписанный 1-байтовое целое число Этот графический интерфейс просто выражает это значение в виде десятичного числа со знаком и эквивалентного 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'
Я отвечаю о значении 0x87089e8 "\377\330\377\340"
,
0x87089e8
это значение source
указатель, т.е. это адрес
в памяти. "\377\330\377\340"
строка символов хранится при этом
адрес, записанный как восьмеричные escape-последовательности. Это написано так
потому что ни один из этих символов не является ASCII (ASCII идет только от 0 до
127). В шестнадцатеричном формате строка байтов ff d8 ff e0 00
, 00
в конце
интерпретируется как и конец строки (ASCII NULL).