【问题标题】:Serialization/Deserialization in C/C++ for union arrays [closed]联合数组的 C/C++ 中的序列化/反序列化 [关闭]
【发布时间】:2013-05-19 07:00:21
【问题描述】:

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

比如我们要序列化:

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() 函数的逆向。

格式只是一个用于标识的字符串(任意)

知道如何实现这些功能吗?另外,如何让它跨架构移植?

谢谢!

【问题讨论】:

  • 听起来非常像一个作业。你试过什么?作业中有什么你不明白的?什么是 C/C++?
  • 我将投票关闭,但只是提示序列化char * 将是一个指向反序列化时您不会关心的数据的指针,因此您将不得不处理字符串。

标签: c++ c serialization


【解决方案1】:

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

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

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

iThis is a string
n234234
n8292
iMore Stuff
n-92

我认为这就是您所说的,它应该适合您。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-20
    • 1970-01-01
    • 2021-01-11
    相关资源
    最近更新 更多