web-dev-qa-db-ja.com

hexdumpはシステムのエンディアンを尊重していますか?

私のマシンでこれらのコマンドを実行すると、次の出力が表示されます。

$ echo foos > myfile
$ hexdump myfile
6f66 736f 000a

Hexdumpからの出力はリトルエンディアンです。これは私のマシンがリトルエンディアンであることを意味しますか、それともhexdumpは常にリトルエンディアン形式を使用しますか?

25
Cory Klein

従来の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アーキテクチャのエンディアンでもあります。

5