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


23

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

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

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

回答:


33

従来のBSD hexdumpユーティリティはプラットフォームのエンディアンを使用するため、表示される出力はマシンがリトルエンディアンであることを意味します。

プラットフォームのエンディアンに関係なく、一貫したバイト単位の出力を取得するにはhexdump -C(またはod -t x1)を使用します。


5

マンページから:

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


3
それは私だけですか、それとも「2バイトの量」を整数として扱っていることをmanページに記載していませんか?私はクレイジーピルを服用していると思っ

@slashingweapon「2バイトの入力データ量」 uint16_t整数です。
ルスラン

「2バイト」は、リトルエンディアンシステムのuint16_tと同じではありません。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.