为什么 hexdump 的输出中换行符位于空格之前?

为什么 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

默认格式为 16 位小端无符号整数。

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.

相关内容