質問

私は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。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top