質問
私はUnix Hexdumpユーティリティで遊んでいます。私の入力ファイルはUTF-8エンコードされており、単一の文字が含まれています ñ
, 、それです C3 B1
16進UTF-8で。
hexdump test.txt
0000000 b1c3
0000002
は?これは示しています B1 C3
- 私が期待したことの逆!誰かが説明できますか?
予想される出力を取得するために私が行う:
hexdump -C test.txt
00000000 c3 b1 |..|
00000002
エンコードシステムを理解していると思っていました。
解決
これは、hexdumpが16ビットの単語を使用することをデフォルトし、小さなエンディアンアーキテクチャで実行されているためです。バイトシーケンス b1 c3
したがって、ヘックスワードとして解釈されます c3b1
. 。 -C
オプションは、hexdumpが単語の代わりにバイトで動作するように強制します。
他のヒント
それを避けるための2つの方法を見つけました:
hexdump -C file
また
od -tx1 < file
Hexdumpがファイルが通常16ビットワードリトルエンディアンであると判断したことは愚かだと思います。非常に紛らわしいIMO。
所属していません StackOverflow