Уважает ли hexdump порядок своей системы?


23

На моей машине я получаю следующий вывод при запуске этих команд:

$ echo foos > myfile
$ hexdump myfile
6f66 736f 000a

Вывод из hexdump является прямым порядком байтов. Означает ли это, что моя машина имеет формат с прямым порядком байтов или в hexdump всегда используется формат с прямым порядком байтов?

Ответы:


33

Традиционная hexdumpутилита BSD использует порядковый номер платформы, поэтому вывод, который вы видите, означает, что ваша машина имеет младший порядок.

Используйте hexdump -C(или od -t x1), чтобы получить последовательный побайтный вывод независимо от порядкового номера платформы.


5

Из справочной страницы:

 -x      Two-byte hexadecimal display.  Display the input offset in hexa‐
         decimal, followed by eight, space separated, four column, zero-
         filled, two-byte quantities of input data, in hexadecimal, per
         line.

...

 If no format strings are specified, the default display is equivalent to
 specifying the -x option.

Ваш вывод имеет младший порядок (сначала младший байт), что также является порядком байтов архитектур x86 и x86_64, которые вы, вероятно, используете.


3
Это только я, или страница руководства нигде не упоминает, что она рассматривает «двухбайтовые величины» как целые числа? Я думала, что принимаю сумасшедшие таблетки ...
рубя

@slashingweapon "двухбайтовое количество входных данных" является uint16_t целым числом.
Руслан

«Два байта» - это не то же самое, что uint16_t в системе с прямым порядком байтов.
Слабое
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.