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