Iconv 如何处理字节顺序?

Iconv 如何处理字节顺序?
echo hello | iconv -f ascii -t utf-16le | od -x

产生一个在我看来像大端的结果

0068    0065    006c    006c    006f    000a

le而在 utf16le 系统 (OS X) 上,没有产生的同一行

echo hello | iconv -f ascii -t utf-16 | od -x

fffe    6800    6500    6c00    6c00    6f00    0a00

是否od -x改变字节顺序?

答案1

$ echo hello | iconv -f ascii -t utf-16le | hexdump -C
00000000  68 00 65 00 6c 00 6c 00  6f 00 0a 00              |h.e.l.l.o...|
$ echo hello | iconv -f ascii -t utf-16le | od -t x1
0000000 68 00 65 00 6c 00 6c 00 6f 00 0a 00

问题是 'od' 如何处理字节顺序。当你要求它显示大于单个字节的单位-x显示 16 位字),它将默认为其所运行系统的本机内容。

您的 macOS 可能运行在小端的 Intel x86_64 CPU 上,这意味着当字节被“od”解码时,它们{0x68, 0x00}确实代表 16 位数字。0x0068

相关内容