0
我有一個二進制數據緩衝區,我想要存儲在協議緩衝區中。在協議緩衝區消息中存儲二進制數據緩衝區
在文檔(https://developers.google.com/protocol-buffers/docs/proto#scalar)中,它表示bytes
類型等同於C++中的string
。我簡直不敢相信這個,所以我不得不去試一下,是的,這似乎是這樣..
這原:
message BufferMsg {
required bytes buffer = 1;
}
給出包含此消息的定義:
private:
::std::string* buffer_;
公共setter/getter API如下所示:
// required bytes buffer = 1;
inline bool has_buffer() const;
inline void clear_buffer();
static const int kBufferFieldNumber = 1;
inline const ::std::string& buffer() const;
inline void set_buffer(const ::std::string& value);
inline void set_buffer(const char* value);
inline void set_buffer(const void* value, size_t size);
inline ::std::string* mutable_buffer();
inline ::std::string* release_buffer();
inline void set_allocated_buffer(::std::string* buffer);
當然,這不能用來存儲二進制數據的方式 一個消息。應該怎麼做?在C++中,我通常會使用unsigned char
數組或類似的東西來存儲數據。
_「當然,這不可能是將二進制數據存儲在消息中的方式,應該怎麼做?」_您最關心的是什麼?我用它,它工作正常。 –
在std :: string中存儲零值沒有問題嗎? – Martin
不存在將''\ 0''存儲在'std :: string'中的問題。長度是獨立跟蹤的。 –