私は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
エンコーディングシステムを理解していると思っていました。
これは、hexdumpがデフォルトで16ビットワードを使用し、リトルエンディアンアーキテクチャで実行しているためです。したがって、バイトシーケンスb1 c3
は、16進ワードc3b1
として解釈されます。 -C
オプションは、hexdumpが単語ではなくバイトで動作するように強制します。
私はそれを回避する2つの方法を見つけました:
hexdump -C file
または
od -tx1 < file
Hexdumpがファイルは通常16ビットワードのリトルエンディアンであると判断したのは愚かなことだと思います。非常に紛らわしいIMO。