web-dev-qa-db-ja.com

hexdumpの混乱

私はunixhexdumpユーティリティで遊んでいます。私の入力ファイルはUTF-8でエンコードされており、1文字のñが含まれています。これは、16進数のUTF-8ではC3 B1です。

hexdump test.txt
0000000 b1c3
0000002

え?これはB1 C3を示しています-私が期待したものの逆です!誰かが説明できますか?

期待される出力を得るために私はします:

hexdump -C test.txt
00000000  c3 b1                                             |..|
00000002

エンコーディングシステムを理解していると思っていました。

34
zedoo

これは、hexdumpがデフォルトで16ビットワードを使用し、リトルエンディアンアーキテクチャで実行しているためです。したがって、バイトシーケンスb1 c3は、16進ワードc3b1として解釈されます。 -Cオプションは、hexdumpが単語ではなくバイトで動作するように強制します。

43
Marcelo Cantos

私はそれを回避する2つの方法を見つけました:

hexdump -C file

または

od -tx1 < file

Hexdumpがファイルは通常16ビットワードのリトルエンディアンであると判断したのは愚かなことだと思います。非常に紛らわしいIMO。

1
akostadinov