Next: , Previous: , Up: Top   [Contents][Index]


43 バイナリーファイルの編集

バイナリーファイルを編集する特別なメジャーモードに、Hexlモードがあります。これを使用するには、ファイルをvisitするためにC-x C-fのかわりに、M-x hexl-find-fileを使用します。このコマンドはファイル内容を16進に変換して、その変換結果を編集できるようにします。ファイルを保存するときは、自動的にバイナリーに変換されます。

既存のバッファーを16進(hex)に変換するために、M-x hexl-modeを使用することもできます。これは普通にファイルをvisitしてから、それがバイナリーファイルだと気づいた場合などに便利です。

Hexlモードでは、テキスト挿入は常に上書きとなります。これは、アクシデントによりファイル内データのアラインメントを破壊する危険を軽減します。通常のテキスト文字は、それらの文字自身をを挿入(それらの文字で上書き)します。文字コードにより特殊文字を挿入するコマンドあります。Hexlモードでは、ほとんどのカーソル移動キー、同様にC-x C-sは、同じ効果を生むコマンドにバインドされています。以下は、特にHexlモードで重要なその他コマンドです:

C-M-d

10進でタイプされたバイトコードを挿入します。

C-M-o

8進でタイプされたバイトコードを挿入します。

C-M-x

16進でタイプされたバイトコードを挿入します。

C-M-a

512バイトページの先頭に移動します。

C-M-e

512バイトページの最後に移動します。

C-x [

1Kバイトページの先頭に移動します。

C-x ]

1Kバイトページの最後に移動します。

M-g

16進で指定されたアドレスに移動します。

M-j

10進で指定されたアドレスに移動します。

C-c C-c

Hexlモードを抜けて、hexl-modeモードを呼び出す前の、このバッファーのメジャーモードに戻ります。

他のHexlコマンドには、バイナリーバイトの文字列(シーケンス)の挿入、shortint単位での移動などがあります。詳細については、C-h a hexl-RETとタイプしてください。

テキストファイルの編集にもHexlモードを使用できます。これはテキストファイルに通常はないような文字が含まれていたりエンコーディング(Coding Systemsを参照)が使用されている場合には便利かもしれません。この目的のためにHexlモードのバイト挿入コマンドはASCII文字、マルチバイト文字を含む非ASCII文字も挿入できます。Hexlモードでテキストファイルを編集するには通常どおりにファイルをvisitしてから、Hexlモードに切り替えるためにM-x hexl-mode RETとタイプします。これでテキスト文字をタイプすれば挿入できます。ただし無効なマルチバイトシーケンスの作成といy危険を避けるために、マルチバイト文字の挿入には特別な配慮が要求されます。そのような文字は、ファイル内のマルチバイトシーケンスの最初のバイトにポイントがあるときにタイプを開始する必要があります。