如何在 C 语言中序列化数据

12

我正在使用C语言编写一个服务器-客户端应用程序,并需要来回发送一些数据结构。

我该如何以跨平台的方式对数据进行序列化?


说实话,如果你的数据结构相对简单,我会自己编写序列化代码。 - BobbyShaftoe
在C语言中,您可以使用Binn序列化格式。 - Bernardo Ramos
1个回答

2
如果你需要担心服务器和客户端不同版本之间的兼容性,我建议使用Google协议缓冲区或JSON(可以使用现有的实现,也可以编写自己的实现)。如果版本始终保持同步,只需编写自己的二进制序列化,甚至可以将内存结构定制为“序列化”形式,并使用访问函数来读取和写入它。这基本上涉及将数字以固定字节顺序存储为一些vlc格式(如果你想变得花哨一些),并在一个对象需要引用另一个对象时使用某种对象句柄(最简单的是指向数组的偏移量)代替显式指针。
将数据保持在“序列化”形式内部的一个非常好的附带好处是,你可以在磁盘上处理大型数据集(例如通过mmap)而无需编写自己的复杂缓存代码。

我知道这是一个旧答案,但我对这个想法很感兴趣。你有关于这样的实现的任何参考/提示吗? - magnus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接