私のマシンでこれらのコマンドを実行すると、次の出力が表示されます。
$ echo foos > myfile
$ hexdump myfile
6f66 736f 000a
Hexdumpからの出力はリトルエンディアンです。これは私のマシンがリトルエンディアンであることを意味しますか、それともhexdumpは常にリトルエンディアン形式を使用しますか?
従来のBSD hexdump
ユーティリティはプラットフォームのエンディアンを使用するため、表示される出力はマシンがリトルエンディアンであることを意味します。
使用する hexdump -C
(またはod -t x1
)プラットフォームのエンディアンに関係なく、一貫したバイト単位の出力を取得します。
マンページから:
-x Two-byte hexadecimal display. Display the input offset in hexa‐
decimal, followed by eight, space separated, four column, zero-
filled, two-byte quantities of input data, in hexadecimal, per
line.
...
If no format strings are specified, the default display is equivalent to
specifying the -x option.
出力はリトルエンディアン(最下位バイトが最初)です。これは、おそらく使用しているx86およびx86_64アーキテクチャのエンディアンでもあります。