第 3 部・応用機能 / 3.3

16 進数表示とバイナリ編集

Ctrl+P を押すと、いま開いている文書をバイト単位で確認できます。もともとテキストではないファイルは開いた時点でこの表示になり、しかもバイトを実際に編集できます。この 2 つはルールが違います。

所要時間 約 14 分 対象 バイトを見る必要がある人 前提知識 3.1 バージョン v1.0 ・ 2026-08-26
3.3.1

2 つの入り方

自分で Ctrl+P を押すか、Erya が「これはテキストではない」と判断するか。

① テキストファイルで Ctrl+P

読み取り専用です。表示されるのは「保存したらディスクに書かれるバイト列」そのもので、BOM、現在の文字コード、LF/CRLF を含みます。

もう一度 Ctrl+P、または Esc でテキスト編集に戻り、カーソルは同じバイトの位置にとどまります。

② バイナリファイルは自動でこの表示

テキストとして復号できない、または NUL バイトを含むファイルは、開いた時点でこの表示になり、戻ることはできません。戻る先のテキストが存在しないからです。

64 MiB 未満ならバイトを編集できます。それ以上はストリーム読みの読み取り専用です(3.3.8 参照)。

テキストファイルで読み取り専用な理由

テキスト文書の実体はテキストバッファーであり、バイト列は「保存したらこうなる」という表示にすぎません。バイトを直接いじるには、そのファイルがもともとバイナリである必要があります。テキストファイル内のバイトを変えたいときは、文字を編集するか、F7 で文字コードを変えてください(3.1.2 参照)。

3.3.2

画面に表示されるもの

3 つの欄:オフセット、バイト、印字可能文字。

爾雅 Erya │ [報告.txt]
W 1 行 16/32 O オフセット 10/16 Ctrl+G/G 移動 Ctrl+P/Esc 編集に戻る
00000000 48 65 6C 6C 6F 2C 20 E4 B8 96 E7 95 8C 0A 41 42 |Hello, .......AB| 00000010 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 |CDEFGHIJKLMNOPQR| 00000020 53 54 55 56 57 58 59 5A 0A 0A E5 B7 A5 E4 BD 9C |STUVWXYZ........| 00000030 0A |. |
オフセット 0x1F / 0x31|1 行 16 バイト │ 16 進数 │ UTF-8 │ 報告.txt
16 進数表示(読み取り専用)に切り替えました
欄内容
オフセットその行の先頭バイトの位置。最低 8 桁でゼロ詰めなので、短いファイルでも古典的なダンプの見た目になります。
バイト1 バイトを 16 進数 2 桁で。8 個ごとに区切り、間に空白を 1 つ余分に入れて数えやすくしています。末尾で足りない分は空白です。
文字| で囲まれます。印字可能な ASCII はそのまま、それ以外はすべて . です。日本語はバイト数ぶんの点が並びます。

ステータス行も専用の形になります:オフセット 現在/全体|1 行のバイト数 │ 表示の種類 │ 文字コードまたはモード │ ファイル名。カーソル位置のバイトは 2 つの欄で同時に反転します。

3.3.3

読み取り専用表示の 4 キー

移動キーは通常どおり。この画面専用が 4 つあります。

キー内容
W1 行 16 バイトと 32 バイトを切り替えます。32 バイトには 144 桁の幅が必要で、足りなければ 16 のままで「画面幅が足りません。1 行 32 バイトには 144 桁が必要です」と出ます。
Oオフセットを 10 進数/16 進数で表示します。「オフセットを 10 進数で表示します」。
G または Ctrl+Gオフセットへ移動します(3.3.4 参照)。
Ctrl+P または Escテキスト編集に戻ります。
矢印 / PageUp PageDownバイト・行・ページ単位で移動します。
Home Endその行の最初/最後のバイトへ。
Ctrl+Home Ctrl+Endファイルの先頭/末尾へ。
読むのは画面に映る範囲だけです

16 進数表示はファイル全体をメモリーに読み込みません。見ている部分だけを読みます。数百 MB のファイルでも一瞬で開きます。

3.3.4

オフセットを指定して移動

10 進数と 16 進数を取り違えやすいので、4 通りの書き方に対応しています。

Enter 確定 Esc 取消 ←/→ カーソル移動 Backspace/Delete 削除
オフセットへ移動(16 進数、0x 接頭辞可):1F40
入力解釈
1F40オフセット欄の現在の基数で解釈します。どちらかは入力欄の案内に出ています。
0x1F常に 16 進数
$1F常に 16 進数
1Fh常に 16 進数
0d31常に 10 進数
  • 成功すると「オフセット 0x1F に移動しました」。
  • 形式が不正なら「オフセットの形式が正しくありません。数値、または 0x 接頭辞で 16 進数を入力してください」と出て、もう一度尋ねます。
  • ファイルサイズを超える値は末尾で止まります。
迷ったら接頭辞を付ける

他のツール(xxd、デバッガー、フォーマット仕様書)から写したオフセットはたいてい 16 進数なので、0x を付けておくのが安全です。オフセット欄の基数を確認する手間も省けます。

3.3.5

バイナリファイルは自動でこの表示

判定は単純です。先頭 8 KiB に NUL バイトがあるかどうか。

爾雅 Erya │ [logo.png]
0-9A-F 編集 I 上書き/挿入 BS/Del 削除 W 16/32 O 10/16 G 移動 F11 閉じる
00000000 89 50 4E 47 0D 0A 1A 0A 00 00 00 0D 49 48 44 52 |.PNG........IHDR| 00000010 00 00 01 90 00 00 01 90 08 06 00 00 00 80 BF 36 |...............6| 00000020 CC 00 00 00 09 70 48 59 73 00 00 0E C4 00 00 0E |.....pHYs.......|
オフセット 0x0 / 0x4A21|1 行 16 バイト │ バイナリ │ 上書き │ logo.png
バイナリファイル logo.png(19 KB)を編集可能な 16 進数表示で開きました
  • ヒント行がバイト編集用に変わり、末尾に出口も書かれます。
  • ステータス行の 2 番目は バイナリ(「16 進数」ではありません)、3 番目は 上書き/挿入/読み取り専用。
  • Esc ではテキスト編集に戻りません。戻る先が無いからです。押すと出口をもう一度伝えます:「バイナリファイルは 16 進数表示でのみ開けます。F11 でタブを閉じる、Ctrl+X で終了」。
UTF-16 はバイナリ扱いにしません

UTF-16 のテキストは NUL だらけで、見た目はバイナリそっくりです。Erya はその形を見分け、非対応の文字コードとして報告します。編集可能なバイト列として見せることはしません。問題のないテキストファイルを壊しかねないからです(3.1.1 参照)。

3.3.6

1 バイトを書き換える

16 進数を 2 桁入力します。上位半バイト、次に下位半バイト。

  1. 対象のバイトにカーソルを置きます。2 つの欄で反転します。
  2. 1 桁目を入力します。4A にするなら 4。上位半バイトが決まります。
  3. 2 桁目を入力します。A を押すとそのバイトが 4A になり、カーソルが次へ進みます。
  4. この 2 回で 1 手です。Ctrl+Z 1 回で元の値に戻り、半分だけ戻ることはありません。
16 進数以外のキーを押すと

「バイトを変更するには 16 進数(0-9、A-F)を入力してください」と出ます。書き込めるのは 0〜9 と A〜F だけです(大文字小文字どちらでも可)。

保存・元に戻す・やり直す・名前を付けて保存は通常どおりのキー(Ctrl+S、Ctrl+Z、Ctrl+Y、F12)です。バイナリ文書にはテキストバッファーが無いため、文字コード変換・改行コード変換・比較は使えません。押すと「16 進数表示はこの操作に対応していません」と出ます。

3.3.7

バイトの挿入と削除

Mac のキーボードに Insert が無いため、この画面には専用の I があります。

キー内容
I(または Insert)上書きと挿入を切り替えます。ステータス行の 3 番目が変わります。
Backspaceカーソルの前のバイトを削除
Deleteカーソル位置のバイトを削除

上書き(既定)

入力したバイトが元のバイトを置き換え、ファイルの長さは変わりません。

PNG・ZIP・ファームウェアなど、長さを保つ必要がある形式ではこちらを。

挿入

入力したバイトが差し込まれ、後ろが押し出されてファイルが伸びます。

挿入モードではカーソルを最後のバイトより後ろに置けるので、末尾への追加ができます。

バイナリを編集する前にバックアップを

Erya には 100 手の履歴がありますが、ファイル形式のほうに余裕がありません。長さが 1 バイトずれる、チェックサムを更新し忘れる、それだけで壊れます。先に F12 で控えを作るか、外部で原本を複製してください。

3.3.8

大きなファイルは読み取り専用のまま

境界は大容量テキストと同じ 64 MiB です。

ファイル開き方編集できるか
64 MiB 未満のバイナリバイトをメモリーに保持できます:変更・挿入・削除・元に戻す・保存
64 MiB 以上のバイナリストリーム読みできません。3 番目のマスが 読み取り専用
  • 大きなバイナリを開くと「バイナリファイル disk.img(4.2 GB)を読み取り専用の 16 進数表示で開きました」と出ます。
  • 変更しようとすると「このバイナリファイルは読み取り専用のため変更できません」。
  • ヒント行も読み取り専用版になり、末尾に「読み取り専用」と付きます。
この境界はメモリーの上限のためです

編集できるということは、全バイトをメモリーに置くということです。8 GB のイメージを開いたときにマシンを止めてしまうくらいなら、読み取り専用のほうがましだという判断で、大容量テキストと同じ考え方です(3.2.3 参照)。

3.3.9

よくあるつまずき

16 進数表示での 7 つの場面。

症状原因と対処
テキストファイルのバイトを変えられないテキストファイルでは読み取り専用です(3.3.1)。
Esc で戻れないバイナリファイルで、戻る先のテキスト編集がありません。F11 か Ctrl+X(3.3.5)。
W で 32 バイトにならないターミナルが 144 桁未満です。広げてから押してください(3.3.3)。
移動先が想定と違う入力が別の基数で解釈されました。0x を付けます(3.3.4)。
英字キーで「16 進数を入力してください」変更できるのは 0〜9 と A〜F だけです(3.3.6)。
日本語が点の羅列に見える文字欄は印字可能な ASCII だけを表示し、多バイト文字は点になります(3.3.2)。
編集して保存したら開けなくなったバイナリ形式は長さやチェックサムに厳格です。バックアップから戻してください(3.3.7)。