プロトコルバッファはそれができると言っています 任意のバイトシーケンスを含む 。しかし、データに「\ 0」が含まれている場合、プロトコルバッファが文字列変数からデータ全体をエンコードする方法。
プロトコルバッファのC++実装は、バイトタイプと文字列タイプをstd::string
として返します。この構造には、対応するデータ(およびデータ自体)の長さを示す長さ関数が含まれています。したがって、埋め込み\0
文字の特別な意味はありません。
設定関数も文字列を受け入れるか、バッファと長さを受け入れるバージョンがあります。フィールドを設定したい場合は、次のようにすることができます。
pb.set_foo( std::string( data, data_length ) );
または
pb.set_foo( data, data_length );