UN1L9——序列化和反序列化2进制数据
UN1L9——序列化和反序列化2进制数据
序列化和反序列化2进制数据
我们进行网络通信的目的是要传输数据,所以我们在正式学习网络通信之前,要先有二进制数据序列化和反序列化的知识储备
这样才能在讲解网络通信时,轻松应对数据收发相关的需求
网络通信中传输数据的序列化和反序列化是非常重要的,因此在讲解网络通信之前我们必须要掌握以下两个关键知识
- 将类对象序列化为2进制数据
- 将2进制数据反序列化为类对象
主要讲解的内容有:
- 字节编码
- 序列化
- 反序列化
网络通信中传输的数据
在网络通信中,我们把想要传递的类对象信息序列化为2进制数据(一般为byte字节数组),再将该2进制数据通过网络传输给远端设备
远端设备获取到该2进制数据后再将其反序列化为对应的类对象
回顾序列化和反序列化
- 序列化:将类对象信息转换为可保存或传输的格式的过程
- 反序列化:与序列化相对,将保存或传输过来的格式转换为类对象的过程
比如:
将C#类对象序列化为xml、json、2进制三种格式的数据保存在本地,达到持久化的目的,
再将保存在本地的持久化数据文件反序列化为C#类对象
回顾数据持久化2进制知识点
和网络通信相关的重要知识点(会在网络通信中频繁使用):
-
BitConverter类:主要用于处理各类型和字节数组间的相互转换 -
Encoding类:主要用于处理字符串类型和字节数组间的相互转换 - 加密相关:了解2进制数据加密的常用手段和思路
本地持久化知识点:
-
File:文件操作类,用于操作文件 -
FileStream类:文件流类,以流的形式进行文件存储读取操作 -
MemoryStream:内存流对象 -
BinaryFormatter:2进制格式化对象强调: 在2进制知识点我们讲解了
BinaryFormatter类
它可以快速的将C#类对象转换为字节数组数据
但是在网络开发时,我们不会使用BinaryFormatter类来进行数据的序列化和反序列化
因为客户端和服务端的开发语言大多数情况下是不同的,BinaryFormatter类序列化的数据无法兼容其它语言
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 文KRIFE齐的博客!
