Protobuf デコーダー(オンライン)

Protocol Buffers のバイナリメッセージを .proto スキーマなしでブラウザ内でデコード。バイトは端末上に留まります。

protobufのバイトはブラウザ内でローカルにデコードされ、アップロードされることはありませんが、実際の秘密情報や個人データを含むメッセージをツールに貼り付けるのは避けてください。

代わりにJWTをデコードしたいですか?JWTデコーダーをお試しください。

Protobuf デコーダー について

このProtobufデコーダーは、Protocol Buffers のバイナリメッセージを .proto ファイルなしで、バイト列から直接読み取ります。ペイロードをhexまたはbase64で貼り付けると、生のワイヤーフォーマットを走査します。各タグを読み取ってフィールド番号とワイヤータイプを復元し、値を解釈します。varintは int64・uint64・ジグザグの読み方として、fixed64とfixed32は整数・double・floatの見方として示し、length-delimitedのフィールドはまずネストしたメッセージとして、次にUTF-8テキストとして、最後に生のhexバイトとして試します。結果はインデントされたフィールドのツリーとして描画され、繰り返しフィールドは同じ番号の下にまとめられます。gRPCのトラフィック、キャプチャしたパケット、ログ中の不透明なprotoブロブをデバッグするエンジニアのために作られています。すべてはブラウザ内で動作するため、貼り付けたバイトはローカルでデコードされ、端末から外に出ることはありません。

機能

Protobuf デコーダー の使い方

  1. protobufペイロードをhex文字列またはbase64としてコピーします。
  2. Protobufメッセージのボックスに貼り付けます。
  3. 形式はAutoのままにするか、検出が誤っていればHexかBase64を選びます。
  4. デコードされたフィールドのツリーを読み、ネストしたメッセージを展開して値を確認します。

入力

08 96 01 12 07 74 65 73 74 69 6e 67

出力

#1  varint   wire 0   150
#2  string   wire 2   "testing"

フィールド1はvarint(150)、フィールド2はlength-delimitedのUTF-8文字列です。

よくあるエラーとトラブルシューティング

よくある質問

.proto ファイルなしでprotobufをデコードできますか。
はい。このProtobufデコーダーは生のワイヤーフォーマットを読むため、すべてのフィールド番号・ワイヤータイプ・値をバイトから直接復元します。スキーマがないと元のフィールド名や、数値が符号付き・符号なし・enumのどれを意図したかは分からないため、もっともらしい解釈を並べて示します。
protobufのワイヤータイプは何を意味しますか。
各フィールドのタグはワイヤータイプをエンコードします。0はvarint(整数・真偽値・enum)、1はfixed64(sfixed64・double)、2はlength-delimited(文字列・バイト・ネストメッセージ)、5はfixed32(sfixed32・float)です。デコーダーは各フィールドにワイヤータイプを表示するので、元の定義に対応づけられます。
protobufはhexとbase64のどちらで貼り付けるべきですか。
どちらでも動きます。切り替えをAutoのままにすればツールが形式を検出します。きれいなhex(hex数字のペア、空白・コロン・0xプレフィックスは任意)はhexとして読まれ、それ以外はURLセーフを含めてbase64として扱われます。データが曖昧な場合は切り替えを手動で変更してください。
なぜvarintが複数の異なる数値として表示されるのですか。
protobufのvarintは int64・uint64・ジグザグエンコードの sint64 を表せますが、ワイヤーフォーマットはどれかを記録しません。デコーダーはそれらすべてに加え、0と1には真偽値の読み方も表示するので、スキーマに合う解釈を選べます。
デコードしたペイロードはどこかにアップロードされますか。
いいえ。protobufのデコードは純粋なJavaScriptのワイヤーフォーマットパーサーを使い、すべてブラウザ内で動作するため、貼り付けたバイトは端末上で処理され、サーバーへ送信されることはありません。

関連ツール

すべての ArrayKit ツール