ファイル・バイナリ・圧縮

バイナリビューアファイルを1バイトずつ読み、ダンプからファイルに戻す

ファイルを開くとバイトを閲覧できます。「16進ダンプを貼り付け」に切り替えると、xxdやhexdump -Cの出力をファイルに戻せます。

バイナリビューア

入力

example-1x1.png

70バイト(0x46)

ここにファイルをドロップするか、「ファイルを開く」を押してください。

ファイルはブラウザ内で少しずつ読み込むだけで、アップロードされません。

16進ビュー

00000000 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 .PNG........IHDR
00000010 00 00 00 01 00 00 00 01 08 06 00 00 00 1f 15 c4 ................
00000020 89 00 00 00 0d 49 44 41 54 78 da 63 64 60 f8 5f .....IDATx.cd`._
00000030 0f 00 02 87 01 80 eb 47 ba 92 00 00 00 00 49 45 .......G......IE
00000040 4e 44 ae 42 60 82 ND.B`.
選択範囲 0x00000000–0x00000000(1バイト)

バイトをクリックするとカーソルが移動します。Shift+クリックやShift+矢印キーで選択範囲を広げられ、ビュー内ではPageUp・PageDown・Home・Endも使えます。

インスペクター @ 0x00000000(0) · リトルエンディアン

ビット
10001001
int8
-119
uint8
137
int16
20617
uint16
20617
int32
1196314761
uint32
1196314761
int64
727905341920923785
uint64
727905341920923785
float32
52816.53515625
float64
5.292397776572611e-260
UTF-8
—

オプション

example-1x1.png:70バイト。

インストールできないダウンロード、アプリが書き出した設定データ、ファームウェアの.bin、どのソフトでも開けない画像――中身が分からないファイルに出会ったら、バイナリビューア(HEXビューアとも呼ばれます)の出番です。オフセット列で位置が分かり、16進列にはバイトがそのまま並び、ASCII列では埋もれた文字列がすぐ目に入ります。

ターミナルでxxdやhexdump -Cを実行しても同じものは見られ、このバイナリビューアはそれとまったく同じレイアウトで表示するので、行ごとに突き合わせられます。ターミナルにないのはカーソルです。バイトをクリックすると、そこから始まる整数や浮動小数点数をリトルエンディアンでもビッグエンディアンでも読み取れます。チケットに貼られた16進ダンプを元のバイナリに戻すのも同じページでできます。

このバイナリビューアを使う理由

表示はターミナルと同じ。そのうえで、バイトを指して値を確かめられます。

大きなファイルもすぐ開く

ディスクから読むのは画面上の16行とカーソル位置の8バイトだけです。3GBのディスクイメージも3KBのアイコンと同じようにスクロールでき、先頭1MBで打ち切られることもありません。

左に縦長のファイルがあり、その一部分が枠で囲まれて右側の16行の16進グリッドに拡大され、カーソル位置のバイトが強調されている図。

貼り付けたダンプがファイルに戻る

xxdやhexdump -Cの出力を、hexdumpが繰り返し行を省略する*の行も含めて貼り付ければ、.binとして保存できます。オフセットが飛んでいる行は、ゼロで埋めずに行番号付きで知らせます。

16進ダンプの行のうち、オフセットが飛んでいる1行が赤枠で示され、矢印が復元されたバイナリファイルを指している図。

両方のバイト順で値を読む

インスペクターはカーソル位置のバイトを8~64ビット整数と32・64ビット浮動小数点数として読み取ります。エンディアンを切り替えると、同じ4バイトがまったく違う数になるのが分かります。

色分けされた4バイトを2通りの順で読む図。左はリトルエンディアンとして逆順、右はビッグエンディアンとしてそのままの順で、それぞれ異なる長さの値バーになる。

ビューを使いこなす3つのポイント

01

ファイルを開くか、ダンプを貼り付ける

入力欄にファイルをドロップするか「ファイルを開く」を押すと、すぐに表示されます。ファイル全体を読み込むことはありません。「16進ダンプを貼り付け」はxxd、hexdump -C、16進文字列、C配列を受け付け、入力が止まって350ミリ秒後に変換します。

  • 「自動変換」をオフにすると、「変換」かCtrl/Cmd+Enterを押したときだけ変換します。
  • 貼り付けモードで「サンプルを読み込む」を押すと、*行を含むhexdump -Cの出力が入り、省略行がどう展開されるか確認できます。
02

スクロールバーよりキーボード

バイトをクリックしてから、矢印キー、PageUp、PageDownで移動します。Ctrl/Cmd+HomeとCtrl/Cmd+Endで先頭と末尾へ。「オフセットへジャンプ」は0x1A0、1A0h、10進数の416を受け付けます。

  • 検索の既定は16進バイトなので、89 50 4E 47やFF D8 FFのようなシグネチャをそのまま探せます。文字列を探すときは「テキスト」に切り替えます。
03

選んだバイトだけを書き出す

Shift+クリック、または開始オフセットと長さの入力でバイトを選び、書き出し形式を選びます。hexdump -Cとxxdの出力はファイル上の実際のオフセットを保つので、切り出した部分も元のファイルと対応が取れます。

  • テキストでの書き出しは1MiBまで。「選択範囲を保存(.bin)」はバイトを直接コピーするので制限がありません。

バイトに対してできること

ターミナルと同じレイアウト

小文字の16進、8バイト目の後に余分な空白、表示できないバイトはドット、1行8・16・32バイト。00のバイトは薄く表示されるので、詰め物の領域を読み飛ばせます。

バイト列とテキストの検索

16進のバイト列やUTF-8の文字列をファイル全体からバックグラウンドのWorkerで検索します。進捗バー、件数表示、前へ・次へボタン付きで、チャンクの境目をまたぐ一致も見逃しません。

データインスペクター

カーソル位置から、符号付き・符号なしの8・16・32・64ビット整数、float32、float64、現在のバイトのビット、そこから始まるUTF-8の文字を読み取ります。

4つのテキスト形式と生バイト

選択範囲をhexdump -C、xxd、xxd -p形式の16進文字列、xxd -iのようなC配列としてコピー・保存するか、生のバイトを.binとして保存できます。

制限と解析ルール

読み取り専用で、バイトは変更しない
編集、挿入、塗りつぶし、置換はなく、元のファイルに書き戻すこともありません。パッチを当てたいときは、範囲をxxd形式で書き出してテキストを直し、「16進ダンプを貼り付け」に戻して.binを保存します。xxdとxxd -rでの手順と同じです。
貼り付けたダンプの欠けはエラーにし、ゼロで埋めない
各行のオフセットは前の行の終わりにぴったり続いている必要があります。xxd -rは欠けをゼロで埋めますが、このツールは最初の欠け・重なり・認識できない文字で止まり、行と列を知らせます。欠けはたいていコピー時の行抜けだからです。Intel HEX形式のファームウェアは判別して専用のメッセージを出します。
サイズの上限
開けるファイルは4GiBまで。貼り付けは16MiB文字まで、テキストでの書き出しは選択した1MiBまでです。検索は一致が10,000件に達すると止まり、その旨を表示します。検索パターンは256バイトまでです。
テキスト列と検索でできないこと
テキスト列はASCII固定なので、マルチバイトのUTF-8文字はドットになります。カーソル位置の文字はインスペクターのUTF-8行で確認できます。大文字小文字の無視はA–Zのみ。ワイルドカード、数値での検索、ファイル形式の判定、構造の解析には対応しません。

バイナリビューアのよくある質問

バイナリファイルの中身を16進数で見るにはどうすればいいですか?

このバイナリビューアにファイルをドロップするだけです。オフセット列が位置、16進列がバイトそのもの、ASCII列がファイルに含まれる読める文字列を示します。

Windowsでソフトを入れずにファイルの内容をバイナリダンプで確認できますか?

できます。ブラウザでこのページを開いてファイルを選べば、ブラウザ自身がローカルで読み込むので、何もインストールせず、ファイルがパソコンの外に出ることもありません。

xxdで作ったダンプから元のファイルに戻すには?

「16進ダンプを貼り付け」に切り替え、xxdの出力を貼り付けて「ファイル全体を保存(.bin)」を押します。16進ダンプから復元する手順はこれだけです。xxd -rと同じ結果になりますが、行が抜けている場合は黙ってゼロで埋めず、エラーとして知らせます。

16進数の文字列からバイナリファイルを作れますか?

はい。区切りなしの16進文字列、空白・コロン区切り、0xや\x付き、C配列のいずれも貼り付けられ、そのまま.binとして保存できます。

バイナリファイルの内容を「メモ帳」で確認できますか?

正確には確認できません。メモ帳はバイトを文字として解釈しようとするため、文字にならないバイトが化けたり消えたりします。バイナリビューアならすべてのバイトを16進で正確に表示し、読める部分だけをASCII列に出します。

ほかに質問がありますか?

バイナリビューアでファイルを開く

まずサンプルのPNGを読み込んで、シグネチャ、IHDRチャンク、インスペクターでビッグエンディアンとして読んだ幅を確かめ、次にご自分のファイルをバイナリビューアで開いてみてください。

すべての処理はブラウザ内で完結します。