1
我有以下代碼:系列化浮動向量的
struct MsgDetectedTarget
{
int target_id;
float bbox[4]; // need to change
};
在串行化函數:
void SerializeToArray(std::vector<char>& buffer, int& dst_len, void* pMsg, int len){
buffer.resize(HEADER_LENGTH + len);
// encode message header
char header[HEADER_LENGTH + 1] = "";
std::sprintf(header, "%8d", len);
std::memcpy(&buffer[0], header, HEADER_LENGTH);
// encode message body
std::memcpy(&buffer[0]+HEADER_LENGTH, reinterpret_cast<char*>(pMsg), len);
dst_len = HEADER_LENGTH + len;
}
如果在MsgDetectedTarget數據BBOX是固定尺寸的,很容易做序列化。
MsgDetectedTarget msg;
msg.target_id = 1;
msg.bbox[0] = 0;
msg.bbox[1] = 0;
msg.bbox[2] = 500;
msg.bbox[3] = 500;
std::vector<char> msgdata;
int destlen;
SerializeToArray(msgdata, destlen, &msg, sizeof(msg));
問題:
我想改變MsgDetectedTarget的BBOX是浮動的一個載體,我怎麼能進行相應的序列化和反序列化?
非常感謝。
我會發送大小,然後是原始數據。 –
@ Jean-FrancoisFabre你可以舉個例子嗎? – Johnnylin
@Johnnylin你真的需要發明自己的序列化嗎?爲什麼不使用已經全部用完的現有序列化庫?例如[Boost序列化](http://www.boost.org/doc/libs/1_62_0/libs/serialization/doc/index.html)。 –