-1

用字符串和基本整数序列化/反序列化联合数组的最佳方法是什么?

例如,我们要序列化:

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);

联合数组的任意组合由格式字符串的内容表示:“i”表示整数,“s”表示字符串。serialize() 将 src 的内容与上述格式表示的联合成员类型复制到缓冲区中。deserialize() 将缓冲区的内容复制到 dst 中,联合成员类型由格式表示。它实际上与 serialize() 函数相反。

format 只是一个用于识别的字符串(任意)

知道如何实现这些功能吗?此外,如何使其跨架构可移植?

谢谢!

4

1 回答 1

3

最简单的方法是将所有内容打印到其字符串表示形式中。不要做任何二进制表示,也不必担心表示、对齐或填充。

然后只需使用字符串到整数函数(atoi 等)将它们恢复为反序列化例程中的数字表示。

这不是最有效的做事方式,但这通常不是最重要的事情。首先,把事情做好是最重要的。然后,如果它不够好,请担心改进它。

iThis is a string
n234234
n8292
iMore Stuff
n-92

我认为这就是你所说的,它应该对你有用。

于 2013-05-19T07:14:28.327 回答