为什么 od 计算小数值是错误的?

为什么 od 计算小数值是错误的?

这个问题与enzotib对这个问题的回答相关:如何使用 Bash 在二进制文件中查找 2 个字节、增加它们的值并进行替换?

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

$ echo -n $'\x1b\x1f' | od -tx2
0000000 1f1b
0000002

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

echo -n $'\x1b\x1f' | od -tu2
0000000  7963
0000002

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

$ printf "%d" 0x1b1f
6943

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

答案1

你正在运行od一个小尾数法机器。

>>> 0x1f1b
7963

相关内容