#hexdump
#шестнадцатеричный дамп
Вопрос:
thegladiator:~/cp$ cat new.txt
Hello World This is a Trest Progyy
thegladiator:~/cp$ hexdump new.txt
0000000 6548 6c6c 206f 6f57 6c72 2064 6854 7369
0000010 6920 2073 2061 7254 7365 2074 7250 676f
0000020 7979 000a
0000023
Как эти текстовые данные представлены в шестнадцатеричном формате подобным образом? Что это значит?
Комментарии:
1. Это не помогло? en.wikipedia.org/wiki/Hex_dump
2. Какая ОС? (это может помочь объяснить, почему байты меняются местами)
3. @S. Лотт: Это звучит очень похоже на ответ LMGTFY. meta.stackexchange.com/questions/15650 /…
4. Ubuntu / Linux . Wiki не помогла мне понять концепции настолько, насколько я хотел. Почему H равно 48? ASCII ?
5. @Nishant: Да, 48 — это ASCII для H. Однако по какой-то причине ваши байты меняются местами, как указывает Кевиндтимм. Не знаю, почему это происходит.
Ответ №1:
это именно то, что там написано, дамп данных в шестнадцатеричном формате:
H 48
e 65
l 6c
l 6c
o 6f
Хотя странно, что все байты поменялись местами (65 48: e H)
Если вы используете систему * nix, вы можете использовать ‘od -x’, или ‘man od’ подскажет вам все способы получения данных из od 🙂
Комментарии:
1. Похоже, что поменялись местами все байты, а не только некоторые из них.
2. Похоже, что это текст в кодировке ASCII с заменой байтов по какой-то причине. Смотрите asciitable.com
3. @John: Little-endian имеет отношение к числовому кодированию, а не к строковому. en.wikipedia.org/wiki/Endianness
4. Существует ли эквивалентный двоичный дамп?
5. @Eric Если это Linux,
hexdump
то формат вывода по умолчанию (который использовал OP) равен-x
, который отображает данные в виде 16-разрядных целых чисел. Следовательно, проблема с порядковым номером является проблемой. OP должен попробовать с-c
опцией, чтобы увидеть, исчезнет ли переключение.
Ответ №2:
Текст в файле new.txt
хранится с использованием кодировки ASCII. Каждая буква представлена числом, десятичным: 32-127 шестнадцатеричным: 20-7F. Итак, первые три буквы ( H,e,l
) представлены десятичными числами: 72,101,108
и шестнадцатеричными числами: 48,65,6C
Hexdump
по умолчанию принимает каждое 16-битное слово входного файла new.txt
и выводит это слово в виде шестнадцатеричного числа. Поскольку он работает с 16 битами, а не с 8 битами, вы видите выходные данные в неожиданном порядке.
Если вы вместо этого используете xxd new.txt
, вы увидите выходные данные в ожидаемом порядке.
Комментарии:
1. В паре? 8 бит должны быть представлены шестнадцатеричной парой .
2. 8 бит представлены двумя шестнадцатеричными цифрами. Итак, 4 из 48 — это четыре бита, а 8 — это остальные четыре бита
3.
hd
(который является символической ссылкой на шестнадцатеричный дамп и приводит к тому, что-C
переключатель становится стандартным) также выдаст ожидаемый результат.