为什么 od 计算十进制值是错误的?

eri*_*rik 0 od hex byte

这个问题与 enzotib 对以下问题的回答有关:How can I use Bash to find 2 bytes in a binary file,增加它们的值,并替换?

这将两个字节转换为其十六进制值:

$ echo -n $'\x1b\x1f' | od -tx2
0000000 1f1b
0000002
Run Code Online (Sandbox Code Playgroud)

但是现在,这应该给我十进制值:

echo -n $'\x1b\x1f' | od -tu2
0000000  7963
0000002
Run Code Online (Sandbox Code Playgroud)

但是如果我将十六进制值转换为十进制,它应该是

$ printf "%d" 0x1b1f
6943
Run Code Online (Sandbox Code Playgroud)

这是为什么?我od对十进制输出使用错误吗?

Ign*_*ams 5

您正在小端机器od上运行。

>>> 0x1f1b
7963
Run Code Online (Sandbox Code Playgroud)