C语言之结构体

参考文章:CSDN

结构体的序列化与反序列化

结构体序列化

结构体序列化是将结构体转换为字节流的过程。这个字节流可以被写入文件、存储在数据库中,或者通过网络发送到另一台计算机。序列化的过程通常涉及以下步骤:

  1. 字段遍历:遍历结构体中的所有字段。
  2. 字段转换:将每个字段转换为可以存储或传输的格式。
  3. 字节流构建:将转换后的字段按照一定的顺序组合成一个连续的字节流。

序列化的目的是为了能够在不同的环境或平台上保持数据的完整性和一致性。

同时,序列化的结构体就不存在对齐补齐的问题了。

结构体反序列化

反序列化是序列化的逆过程,它将序列化后的字节流重新转换为原始的结构体。这个过程通常涉及以下步骤:

  1. 字节流读取:从存储或传输介质中读取字节流。
  2. 字段解析:按照序列化时的格式和顺序解析字节流中的每个字段。
  3. 数据结构重建:根据解析出的字段重建原始的数据结构。

反序列化使得原始数据结构可以在不同的环境或平台上被重新使用。

序列化和反序列化的应用

  • 网络通信:在网络应用中,序列化用于将数据结构转换为可以在网络上传输的格式。接收方收到数据后,通过反序列化将数据恢复为原始结构体。
  • 数据存储:在文件系统中存储数据时,序列化可以将数据结构转换为文件格式。读取文件时,通过反序列化将文件内容恢复为数据结构。
  • 分布式系统:在分布式系统中,序列化和反序列化用于在不同的节点之间传递消息或数据。

在数据传输中,还有一种方法优于结构体序列化——JSON

JSON介绍

什么是JSON?

JSON是一种轻量级的数据交换格式,它基于文本,易于人阅读和编写,同时也易于机器解析和生成。JSON 实际上是与语言无关的格式,可以被多种编程语言读取和使用。

JSON特点:

  1. JSON是一种轻量级的数据交换格式
  2. JSON采用完全独立于计算机语言和操作系统的平台,不同编程语言和操作系统JSON数据是一样的
  3. JSON易于阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输效率)

JSON相比于结构体序列化的优点:

  • JSON更易读取
  • 结构体序列化关于0语义不是很明确(代表数字0或者空值),而JSON中用单独的null来代表空值

比如我们想向下图序列化的结构体里添加一个空值,只能添加0来表示,这时就会引发歧义,这个0是代表空值还是真正的数字呢?

JSON传输包含0的数据可能出现问题,可以对传输数据使用Base64进行编码,将0替换成其他字符,接收数据一方进行解码即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值