【发布时间】:2016-11-03 13:34:25
【问题描述】:
我有以下代码:
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改成float的向量,如何进行对应的序列化和反序列化?
非常感谢。
【问题讨论】:
-
我会先发送尺寸,然后再发送原始数据。
-
@Jean-FrancoisFabre 你能举个例子吗?
-
@Johnnylin 你真的需要发明自己的序列化吗?为什么不使用已经完成的现有序列化库?比如Boost serialization.
-
@Someprogrammerdude 对于Boost序列化,能举个例子吗?
-
点击链接,阅读文档。您将找到教程和参考资料。
标签: c++ serialization deserialization