Google protobuf を使用して、シリアル化されたメッセージ データをファイルに保存しています。各ファイルには複数のメッセージがあります。コードには C++ と Python の両方のバージョンがあるため、両方の言語で使用できる protobuf 関数を使用する必要があります。SerializeToArray と SerializeAsString を使用して実験しましたが、次のような不幸な状況があるようです:
SerializeToArray: 1 つの回答で示唆されているように、これを使用する最善の方法は、各メッセージの前にデータ サイズを付けることです。これは C++ ではうまく機能しますが、Python ではこれが可能ではないように見えます - 私は間違っていますか?
SerializeAsString: これにより、対応するバイナリに相当するシリアル化された文字列が生成されます。これはファイルに保存できますが、シリアル化の結果の文字の 1 つが \n の場合はどうなるでしょうか。その問題?
アップデート:
少し言い換えさせてください。私が理解しているように、C++ でバイナリ データを書き込むことはできません。これは、Python アプリケーションがデータを読み取れないためです。これは、シリアル化された文字列のメッセージしか解析できないためです。SerializeAsString
代わりに、C++ と Python の両方で使用する必要がありますか? はいの場合、そのようなデータをバイナリ ファイルではなくテキスト ファイルに格納するのがベスト プラクティスですか? 私の直感は二者択一ですが、ご覧のとおり、これは選択肢のようには見えません。