这个问题与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