Protobuf デコーダー
スキーマ不要で Protocol Buffers のバイナリをデコード。hex か Base64 を貼り付け、.bin ファイルをドロップして、フィールド番号・ワイヤタイプ・ネストしたメッセージをブラウザで確認できます。
スキーマなしで protobuf をデコードできますか?
できます。protobuf メッセージはキーにフィールド番号とワイヤタイプを詰め込んだキー・バリュー列です。この 2 つはバイナリ自体に埋め込まれているため、生デコーダーは各フィールドの意味を知らなくてもバイト列をたどり、フィールド番号・ワイヤタイプ・ネストしたメッセージ・文字列という構造を復元できます。
varint・64-bit・length-delimited・32-bit のワイヤタイプとは何ですか?
タイプ 0(varint)は可変長整数、1(64-bit)は double や fixed64 のような固定 8 バイト値、2(length-delimited)は長さ付きのブロックで文字列・bytes・ネストしたメッセージのいずれか、5(32-bit)は float や fixed32 のような固定 4 バイト値です。
テキストで表示されるフィールドとネストしたメッセージで表示されるフィールドがあるのはなぜ?
length-delimited フィールドは本質的に曖昧です。同じバイトが文字列にもサブメッセージにもなり得ます。デコーダーはまず印字可能な UTF-8 テキストかどうかを確認し、そうでなければネストしたメッセージとして解析を試み、どちらでもない場合のみ hex プレビューを表示します。
負の数も正しく表示されますか?
はい。protobuf は負の int32/int64 を 10 バイトの varint で保存し、ツールでは符号なし値と符号付きの解釈を並べて表示します。sint32/sint64 は ZigZag エンコードなので、小さな負数は小さな符号なし値として現れます。
データはどこかにアップロードされますか?
いいえ。デコードはすべてブラウザ内の JavaScript で行われ、バイト列が端末の外に出ることはありません。社外秘や機微なペイロードを調べるときに重要です。
どんな入力形式に対応していますか?
hex テキスト(空白・コロン・カンマ・0x 接頭辞の有無を問わず)、標準および URL セーフな base64、ドラッグ&ドロップしたバイナリファイル。曖昧な場合は hex を優先し、hex と base64 の相互変換もワンクリックです。
このツールはどんな場面で役立ちますか?
ドキュメントのない API のリバースエンジニアリング、gRPC サービスや protobuf 系メッセージキューのデバッグ、シリアライズされたキャッシュやファイルの調査、ワイヤフォーマットの学習、自分のエンコーダーが期待どおりのバイト列を出しているかの検証など。
フィールド名もわかりますか?
いいえ。フィールド名はバイナリではなく .proto スキーマにあります。ツールが表示するのはフィールド番号で、スキーマ上で番号と名前を対応させればツリー全体をそのまま読めます。
エラーのバイトオフセットは何を意味しますか?
データが壊れている・途切れている場合、デコードは解析できない最初のバイトで止まります。表示されるオフセットは入力中のそのバイトを正確に指すため、破損箇所をすぐ特定できます。
Protobuf デコーダーの使い方
この Protobuf デコーダーは、.proto スキーマなしで生の protocol buffer メッセージを読み取ります。protobuf のペイロードはそれ自体がフィールド番号とワイヤタイプを持つため、デコーダーはメッセージ構造全体 — varint、固定 32/64 ビット値、UTF-8 文字列、ネストしたサブメッセージ — を再構築し、展開可能なツリーとして提示できます。すべてブラウザー内でローカル動作し、バイト列がアップロードされることはありません。
- データを入力ボックスに貼り付けます。hex でも(空白・コロン・カンマ・0x 接頭辞すべてOK)base64 でも構いません。判定された形式はボタンの横に表示されます。
- ペイロードが生バイナリなら、代わりに .bin ファイルを入力エリアへドロップします。すぐに読み込まれてデコードされます。
- 「デモ」をクリックすると内蔵サンプルを読み込めます。UTF-8 文字列、zigzag varint、packed repeated フィールド、double、2 段階のネストメッセージを含みます。
- 結果ツリーをたどります。各行にはフィールド番号、ワイヤタイプ(varint / 64-bit / length-delimited / 32-bit)、解釈済みの値が表示され、キャレット付きの行はネストしたサブメッセージに展開できます。
- 「→ Base64」「→ HEX」ボタンで現在の入力を両エンコーディング間で変換するか、「HEX をコピー」で等価な hex 文字列をクリップボードへ。
- データが壊れていたり途中で切れていたりすると、デコードは最初の不正バイトで止まり、エラー行が正確なバイトオフセットを教えます。
length-delimited フィールドの中にネストしたメッセージがあると、展開可能なサブツリーとして描画されます。テキストを期待していたのにそうならないのは、単にそのバイト列が印字可能な UTF-8 ではなかったから。これこそ protobuf の曖昧さ解消の仕組みで、バグではありません。
関連ツール
- Base64 エンコード/デコード 無料オンラインBase64エンコーダーとデコーダー。テキストをBase64に、Base64をテキストに即座に変換。サーバーへのアップロードなし、100%プライベート。
- Hexビューアー 検索、オフセットナビゲーション、仮想スクロール付きのHexダンプ形式でファイル内容を表示
- バイナリからテキスト バイナリコードを読み取り可能なテキストに変換します。
- JWTデコーダー 無料のオンラインJWTデコーダー。JWTを即座にデコードしてヘッダー、ペイロード、署名を表示。登録不要。
- X.509 証明書デコーダー 無料オンライン X.509 証明書デコーダー。PEM または base64 DER を貼り付けて、主体・発行者・有効期間・SAN・鍵の種類・フィンガープリントを確認。100% ローカル処理でアップロード一切なし。
- ファイルハッシュ MD5、SHA-1、SHA-256、SHA-512ファイルハッシュをローカル計算・検証
- Chmod 計算機 無料オンラインchmod計算機でチェックボックス付きLinuxファイル権限を視覚化・計算。数値(755, 644)とシンボリック表記(rwxr-xr-x)を即座に変換。setuid、setgid、sticky bit等の特殊権限に対応。
- ASCIIコード表 10進数、16進数、8進数、2進数コード、HTMLエンティティ、文字説明を含む完全なASCII文字エンコーディングリファレンス。即座に検索・フィルタリング。