如何在C中序列化数据

mma*_*esh 12 c serialization

我在c中编写服务器 - 客户端应用程序,需要来回发送一些结构.

如何以独立于平台的方式序列化数据?

R..*_*R.. 2

如果您需要担心不同版本的服务器和客户端之间的兼容性,我会使用 Google 协议缓冲区或 JSON(现有的实现,或编写您自己的实现)。如果版本始终保持同步,只需编写自己的二进制序列化,甚至将内存结构定制为“序列化”形式并使用访问函数来读取和写入它。这基本上需要以固定字节顺序存储数字作为固定数量的字节,或者如果你想变得更奇特的话,使用某种 vlc 格式,并使用某种类型的对象句柄(最简单的是数组的偏移量)来代替显式指针当一个对象需要引用另一个对象时。

在内部以“序列化”形式保存数据的一个非常好的附带好处是,您可以使用磁盘上的大量数据集(例如通过mmap),而无需编写自己的复杂缓存代码。