使用十六进制转储,以“规范”格式打印这些字符会得到我期望的输出,而默认格式却让我感到困惑。
$ 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.