Protobufデコーダー
Protobuf Decoder
.protoファイルなしでprotobufのペイロードを解き、フィールド番号・ワイヤ型・入れ子を推定します。
`.proto`ファイルなしでprotobufのペイロードを解読します。ワイヤフォーマット——フィールド番号、ワイヤ型、入れ子——を読み、値ごとに成り立つ解釈をすべて並べて見せます。スキーマが無ければ、解釈は本当に1つではないからです。
ペイロード
バイナリのペイロードをドロップ
このタブで解読します。どこにもアップロードしません。
フィールド
最上位フィールド
3
全体のサイズ
17 byte
- #1VARINT@0, 3 Buint 150 · zigzag 75
- #2LEN@3, 9 B"testing"
- #3LEN@12, 5 Bメッセージ(フィールド 1個)
- #1VARINT@0, 3 Buint 150 · zigzag 75
JSON で見る(名前の代わりにフィールド番号)
.proto ファイルがないとフィールド名は分からず、同じペイロードが複数の読み方で成り立ちます。ですから varint は符号なし・符号あり・ジグザグをまとめて示し、長さ付きフィールドはメッセージ・テキスト・バイト列として並べて示します。画面の入れ子は、すべてのバイトがちょうど収まる読み方です。ほかの読み方は隠さず、隣に書いてあります。使い方
バイト列を貼り付けるか、ファイルをドロップします
空白があってもなくても16進数、あるいはBase64を受け付けます。代わりに32MBまでのバイナリファイルを置くこともできます。
フィールドの一覧を読みます
行ごとに、フィールド番号、ワイヤ型、バイトのオフセットと長さ、そして解釈が出ます。入れ子のメッセージは、親の下にインデントして示します。
JSONへの投影を持っていきます
同じ木をJSONにしたものです。名前のところにフィールド番号が入ります。2つのペイロードを比べたり、issueに貼り付けたりするのに使えます。
よくある質問
フィールド名が無いのはなぜですか
protobufが名前を通信路に載せないからです。符号化されたメッセージにはフィールドの*番号*しか入っておらず、名前は`.proto`ファイルの中にあります。だからこの形式は小さく、だからスキーマ無しの解読は番号までしか見せられません。
1つの値が3通りに出るのはなぜですか
通信路の上のvarintは、ただのビットだからです。同じバイト列が、正しい`uint64`でもあり、正しい`int64`でもあり、正しいジグザグの`sint64`でもあります。どれなのかを知っているのはスキーマだけです。1つだけを見せて残りを隠せば、推測を事実として差し出すことになります。
入れ子のメッセージだとどう判断していますか
長さの付いたフィールドは、メッセージかもしれませんし、文字列かもしれませんし、ただのバイト列かもしれません。中身が完全にパースできるとき——すべてのバイトが消費され、余りが出ないとき——にメッセージとして見せ、そのバイト列が表示可能なテキストでもあれば、文字列としての解釈を横に並べます。短い文字列がたまたまメッセージとしてパースできてしまうこともときどきあるので、両方の解釈を置いて、判断できるようにしてあります。
gRPCの通信も解読できますか
メッセージの本体なら解読できます。先頭にある5バイトのgRPCのフレームヘッダー——圧縮フラグ1バイトと、ビッグエンディアンの長さ4バイト——を外してから入れてください。その後ろのバイト列を渡せば、いつもどおり解読します。
ここから渡せます
16進ダンプビューアー
Hex Viewer
どんなファイルもオフセット・16進・ASCIIのダンプで開き、マジックバイトから形式を当て、検索の当たりを光らせます。
JSONフォーマッター・検証
JSON Formatter & Validator
JSONを整形・圧縮して検証し、構文エラーがあれば行と列を正確に指し示します。
YAMLフォーマッター・検証
YAML Formatter & Validator
YAMLのインデントを揃えて検証し、パーサを壊すタブやアンカーの誤りに印を付けます。
TOMLフォーマッター・検証
TOML Formatter & Validator
TOMLを整形して検証し、テーブルの順序とインラインテーブルの書き方を揃えます。
次の一手
このツールが出したものをそのまま受け取れる道具です。
Base64エンコード・デコード
Base64 Encoder & Decoder
テキストでもファイルでもBase64とBase64URLを符号化・復号し、UTF-8も正しく扱います。
16進ダンプビューアー
Hex Viewer
どんなファイルもオフセット・16進・ASCIIのダンプで開き、マジックバイトから形式を当て、検索の当たりを光らせます。
JSONフォーマッター・検証
JSON Formatter & Validator
JSONを整形・圧縮して検証し、構文エラーがあれば行と列を正確に指し示します。
JSON⇄CSV変換
JSON ⇄ CSV
入れ子のJSONをドット記法の列名で平らに開くか、表からオブジェクトを組み直します。
JSON差分比較
JSON Diff
キーの順序を無視して2つのJSONを構造で比べ、追加・削除・変更されたパスを挙げます。
JSONからTypeScript型
JSON to TypeScript
JSONの実例からTypeScriptのインターフェースや型を推論し、省略可能なフィールドとユニオンをまとめます。