使用字符串和基本整数序列化/反序列化 union 数组的最佳方法是什么?
例如,我们要序列化:
union val_u {
int i;
char *s;
}
void serialize(void *buffer, const char *format, const union val_u src[]);
void deserialize(union val_u dst[], const char *format, const void *buffer);
union 数组的任意组合表示为 格式字符串的内容:'i'表示整数 而's'表示一个字符串。 Serialize() 将 src 的内容与 union 成员一起复制 将如上所述的格式表示的类型放入缓冲区中。 deserialize() 将缓冲区的内容复制到 dst 中 由格式表示的 union 成员类型。从字面上看,它是 Serialize() 函数的逆操作。
格式只是一个用于标识的字符串(任意)
知道如何实现这些功能吗?另外,如何使其跨架构可移植?
谢谢!
最佳答案
最简单的方法是将所有内容打印为其字符串表示形式。不进行任何二进制表示,您不必担心表示、对齐或填充。
然后只需使用字符串到整数函数(atoi 等)即可将它们返回到反序列化例程中的数字表示形式。
这不是最有效的做事方式,但这通常不是最重要的事情。首先,把事情做好是最重要的。然后,如果它还不够好,就担心如何改进它。
iThis is a string
n234234
n8292
iMore Stuff
n-92
我认为这就是您所说的,它应该对您有用。
关于c++ - C/C++ 中 union 数组的序列化/反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16632208/