マイコンピュータでこのコマンドを実行すると、次の結果が表示されます。
$ echo foos > myfile
$ hexdump myfile
6f66 736f 000a
hexdumpの出力はリトルエンディアンです。これは私のコンピュータがリトルエンディアンであることを意味しますか、それともhexdumpは常にリトルエンディアンフォーマットを使用しますか?
答え1
既存のBSDhexdump
ユーティリティはプラットフォームのエンディアンを使用するため、表示される出力はコンピュータがリトルエンディアンであることを意味します。
プラットフォームのエンディアンに関係なく、一貫したバイト単位の出力を取得するにはhexdump -C
(または)を使用します。od -t x1
答え2
マンページから:
-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アーキテクチャのエンディアンです。