Вопрос

Я играю с утилитой Unix Hexdump. Мой входной файл является кодировкой UTF-8, содержащий один символ ñ, который C3 B1 В шестнадцатеричном УТФ-8.

hexdump test.txt
0000000 b1c3
0000002

Хм? Это показывает B1 C3 - инверсия того, что я ожидал! Может кто-то объяснить?

Для получения ожидаемого вывода я делаю:

hexdump -C test.txt
00000000  c3 b1                                             |..|
00000002

Я думал, что я понимаю системы кодирования ..

Это было полезно?

Решение

Это связано с тем, что Hexdump по умолчанию использует 16-битные слова, и вы работаете на небольшой эндеанной архитектуре. Последовательность байта b1 c3 Таким образом, интерпретируется как шестнадцатеричное слово c3b1. Отказ То -C Вариант заставляет Hexdump работать с байтами вместо слов.

Другие советы

Я нашел два способа избежать этого:

hexdump -C file

или

od -tx1 < file

Я думаю, что это глупо, что Hexdump решил, что файлы обычно 16bit Word Little Endian. Очень запутанному ИМО.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top