
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 上,該 CPU 是小端字節序,這表示位元組在透過「od」解碼時{0x68, 0x00}
確實代表 16 位元數字。0x0068