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

如何在C语言中序列化数据,c,serialization,C,Serialization,我正在用c编写一个服务器客户端应用程序,需要来回发送一些结构 如何以独立于平台的方式序列化数据?如果您需要担心不同版本的服务器和客户端之间的兼容性,我会使用Google协议缓冲区或JSON(既有实现,也可以编写自己的实现)。如果版本总是同步的,只需编写您自己的二进制序列化,甚至可以将内存中的结构裁剪为“序列化”形式,并使用访问函数进行读写。这基本上需要以固定的尾端顺序将数字存储为固定的字节数,或者如果您想喜欢,可以使用某种vlc格式,并在一个对象需要引用另一个对象时使用某种类型的对象句柄(最简单

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


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

如果您需要担心不同版本的服务器和客户端之间的兼容性,我会使用Google协议缓冲区或JSON(既有实现,也可以编写自己的实现)。如果版本总是同步的,只需编写您自己的二进制序列化,甚至可以将内存中的结构裁剪为“序列化”形式,并使用访问函数进行读写。这基本上需要以固定的尾端顺序将数字存储为固定的字节数,或者如果您想喜欢,可以使用某种vlc格式,并在一个对象需要引用另一个对象时使用某种类型的对象句柄(最简单的是数组中的偏移量)代替显式指针


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

老实说,如果您有相当简单的数据结构,在C语言中,你可以使用序列化格式。我知道这是一个古老的答案,但我对这个想法很感兴趣。您是否有任何关于此类实施的参考/提示?