バイナリファイルを編集するための専用のメジャーモード「Hexlモード」があります。これを使用するには、C-x C-fの代わりにM-x hexl-find-fileを指定してファイルを開いてください。このコマンドはファイルの内容を16進数に変換し、その変換結果を編集できるようにします。ファイルを保存すると、自動的にバイナリ形式に戻されます。
また、M-x hexl-mode を使用して既存のバッファを16進数に変換することもできます。これは、通常通りにファイルを開いたところ、それがバイナリファイルであることが判明した場合に便利です。
Hexlモードでは、テキストの挿入は常に上書きされます。これは、ファイル内のデータの配置を誤って崩してしまうリスクを軽減するためです。通常のテキスト文字は、そのまま挿入されます(つまり、自身を上書きします)。特殊文字をコードで挿入するためのコマンドが用意されています。ほとんどのカーソル移動キーおよびC-x C-sは、Hexlモードにおいて同様の効果を持つコマンドに割り当てられています。以下に、Hexlモード特有のその他の重要なコマンドを挙げます:
10進数で入力したコードのバイトを挿入してください。
8進数で入力したコードを持つバイトを挿入してください。
16進数で入力したコードのバイトを挿入してください。
512バイトページの先頭に移動する。
512バイトページの末尾に移動する。
1kバイトページの先頭に移動する。
1kバイトページの末尾に移動する。
16進数で指定されたアドレスに移動する。
10進数で指定されたアドレスに移動する。
Hexlモードを終了し、このバッファでhexl-modeを呼び出す前に設定されていたメジャーモードに戻ります。
その他のHexlコマンドでは、バイナリバイトの文字列(シーケンス)の挿入や、shortまたはint単位での移動などが可能です。詳細はC-h a hexl- TABと入力してください。
Hexlモードはテキストファイルの編集にも利用できます。テキストファイルに特殊な文字が含まれていたり、特殊なエンコーディングが使用されていたりする場合に便利です(コーディングシステムを参照)。この目的のため、バイトを挿入するHexlコマンドでは、マルチバイト文字を含むASCII文字および非ASCII文字も挿入可能です。Hexlでテキストファイルを編集するには、通常通りファイルを開き、M-x hexl-mode RETと入力してHexlモードに切り替えます。これで、テキスト文字を入力して挿入できるようになります。ただし、マルチバイト文字を挿入する際は、無効なマルチバイトシーケンスが生成される危険を避けるため、特別な注意が必要です。具体的には、ポイントがファイル内のマルチバイトシーケンスの最初のバイトにある状態で、該当する文字の入力を開始してください。