2

私はprotobufの実装を学んでいます。ただ、一点だけ理解できない点があります。フレームワークは、サブメッセージ (オブジェクト) を可変長のバッファにシリアル化する方法を教えてください。それを別の場所にシリアル化し、後でバッファにコピーしますか?

4

1 に答える 1

1

私が考えることができる少なくとも 4 つの方法があります。答えが正しい限り、「どれ」が実装の詳細です。

  • 別のバッファにシリアライズしてからコピーする
  • ヘッダーにかかる長さについて仮定し、それをスキップしてシリアル化し、戻ってヘッダーを修正します (移動を伴う場合がありますが、常にではありません)。
  • ビルダーを使用する場合、データを追加するときに個別にシリアル化し、後で構成することができます。この場合、長さを把握するのは簡単です
  • または、実際にシリアル化せずに値の長さを計算するコードを含めることができます

これらの方法のうち、少なくとも 3 つの方法で、異なる時期に実装しました。

于 2012-10-13T10:12:36.123 に答える