質問: 特定のprotobufシリアル化からすべてのタグ番号を抽出できますか? プロトタイプのシリアライゼーションがあれば、メッセージに含まれるすべてのタグ番号のリストを取得できますか?一般に、.protoファイルを定義しないでメッセージの構造を見ることは可能ですか?
回答: ほとんどのAPIは、生のprotobufストリームを列挙できるように、読者ベースのAPIの形式を持っています。しかし、*スキーマなし*の解釈があいまいなので、それだけではデータを完全に理解するには不十分です。 * varintがジグザグでエンコードされている可能性があります( `sint32` / `sint64` )。そうでない場合( `int32` / `int64` >/ `uint32` / `uint64` ) - 意味を根本的に変更するか、ブール値または列挙型を変更する * 固定32 /固定64は、符号付きまたは符号なしの整数でも、IEEE754 float/double * 長さ接頭辞付きのチャンクは、UTF-8文字列、BLOB、サブメッセージ、またはパックされたプリミティブの繰り返しセットです。サブメッセージの場合、再帰的に繰り返す必要があります。 だから...はい、いいえ。確かに、最も外側のメッセージのフィールド番号を得ることができます。 別のアプローチは、**メンバー**( `Naked {}` のメッセージ)を持つタイプに対して*通常の* APIを使用し、つまり、すべての実装が提供する「拡張」APIを介して)