1

protobufメッセージをファイルに保存していますが、形式がすべて乱雑になっています。私は、protobugメッセージが.protoファイルとほぼ同じ形式でディスクに保存される前にそれが行われるのを見ました。私はそれを次のようにやっています:

using (Stream output = File.OpenWrite(@"logs\listings.txt"))
{          
    listingBook.AddClisting(_listing);
    listingBook.Build().WriteTo(output);
}

しかし、私が得たのは、奇妙なタグで区切られたENTERのように見える壊れたファイルです。ディスクに保存したときにどのように表示したいのかは、次の例のようになります。

# Textual representation of a protocol buffer.
# This is *not* the binary format used on the wire.
person {
  name: "John Doe"
  email: "jdoe@example.com"
}
4

4 に答える 4

6

コメントにもっと注意を払う

これは、ネットワーク上で使用されるバイナリ形式ではありません。

Protobuf メッセージは、人間が判読できるようには設計されていません。それらをテキスト ファイルに格納しても意味がありません。それらはテキストではありません。

于 2012-12-14T16:25:49.153 に答える
1

WriteToの代わりにPrintToを使用すると、データが読み取り可能な形式に保たれます。ついにそれを見つけました。

于 2012-12-14T17:07:30.723 に答える
1

主要な protobuf エンコーディング形式はバイナリです。一部の実装で公開されているセカンダリ テキスト形式がありますが、protobuf の多くの利点が失われ、ライブラリのサポートは不完全です (正式に定義されている場合でも)。人間が読めるようにしたい場合は、XMLまたはjsonを使用してください。プロトコル バッファではありません。

于 2012-12-14T16:49:23.610 に答える