2

Используя hexdump, печать этих символов в "каноническом" формате дает результат, который я ожидаю, в то время как формат по умолчанию отбрасывает меня.

$ echo " " |hexdump                  # Reversed?
0000000 0a20
0000002

$ echo -n " " |hexdump               # Ok, fair enough.
0000000 0020

$ echo  " " |hexdump -C              # Canonical
00000000  20 0a                      | .|
00000002

С другой строкой, такой как "123", вывод еще более запутан:

$ echo  "123" |hexdump
0000000 3231 0a33
0000004

Вывод здесь не кажется "перевернутым", а скорее перемешан. Что (кратко) здесь происходит?

1 ответ1

1

По умолчанию используется формат 16-битных мало Endian неподписанный Ints.

Страница руководства hexdump также объясняет формат по умолчанию:

 -x  Two-byte hexadecimal display.  Display the input offset in hexadecimal, 
     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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .