41

我正在使用 Unix hexdump 实用程序。我的输入文件是 UTF-8 编码的,包含一个字符ñ,它是C3 B1十六进制的 UTF-8。

hexdump test.txt
0000000 b1c3
0000002

嗯?这表明B1 C3- 与我的预期相反!有人可以解释吗?

为了获得预期的输出,我这样做:

hexdump -C test.txt
00000000  c3 b1                                             |..|
00000002

我在想我理解编码系统。

4

2 回答 2

52

这是因为 hexdump 默认使用 16 位字,并且您在 little-endian 架构上运行。因此,字节序列b1 c3被解释为十六进制字c3b1。该-C选项强制 hexdump 使用字节而不是单词。

于 2010-05-17T08:07:08.790 回答
3

我找到了两种避免这种情况的方法:

hexdump -C file

或者

od -tx1 < file

我认为 hexdump 决定文件通常是 16 位字小端序是愚蠢的。非常令人困惑的国际海事组织。

于 2016-11-16T22:07:55.137 回答