Iconv はエンディアンネスをどのように処理しますか?

Iconv はエンディアンネスをどのように処理しますか?
echo hello | iconv -f ascii -t utf-16le | od -x

ビッグエンディアンの結果のように思われる

0068    0065    006c    006c    006f    000a

一方、同じ行をleutf16leシステム(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」がエンディアンネスをどのように処理するかです。1バイトより大きい単位( -x16 ビット ワードを表示)、実行中のシステムにネイティブなものがデフォルトになります。

おそらく、macOS はリトルエンディアンの Intel x86_64 CPU 上で実行されており、バイトは'od' によってデコードされると{0x68, 0x00}実際に 16 ビットの数値を表します。0x0068

関連情報