41

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

hexdump test.txt
0000000 b1c3
0000002

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

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

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

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

4

2 に答える 2

52

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

于 2010-05-17T08:07:08.790 に答える
3

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

hexdump -C file

また

od -tx1 < file

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

于 2016-11-16T22:07:55.137 に答える