网络数据处理相关
在网络通信中,我们把想要传递的类对象数据序列化为二进制数据(一般为byte字节数组),再将该二进制数据通过网络传输给远端设备。远端设备获取到该二进制数据后再将其反序列化为对应的类对象。
序列化: 将类对象信息转换为可保存或传输的格式的过程
反序列化: 与序列化相对,将保存或传输过来的格式转换为类对象的过程
C#基本数据类型
类型 | 别名 | 取值范围 | 说明 | 分类 |
sbyte | System.Sbyte | -128~127 | 1个字节的有符号整数 | 整数类型 |
byte | System.Byte | 0~255 | 1个字节的无符号整数 | |
short | System.Int16 | -32768~32767 | 2个字节的有符号整数 | |
ushort | System.Uint16 | 0~65535 | 2个字节的无符号整数 | |
int | System.Int32 | -2,147,483,648 ~2,147,483,647 | 4个字节的有符号整数 | |
uint | System.Uint32 | 0 ~ 4,294,967,295 | 4个字节的无符号整数 | |
long | System.Int64 | | 8个字节的有符号整数 | |
ulong | System.Uint64 | | 8个字节的无符号整数 | |
float | System.Single | 占4个字节 | 实数类型 | |
double | System.Double | 占8个字节 | ||
decimal | System.Decimal | 占12个字节 | ||
char | System.Char | 占2个字节 | 字符型 | |
bool | System.Boolean | 占1个字节 | 布尔类型 |
字节单位换算
在 C# 中进行字节单位换算是处理文件大小、内存分配和网络传输时的常见需求。
1 KB = 1024 B
1 MB = 1024 KB
1 GB = 1024 MB
1TB = 1024GB
单位名称 | 缩写 | 字节数 | 说明 |
字节 | B | 1 | 基本单位 |
千字节 | KB | 1,024 (2^10) | 二进制千字节 |
兆字节 | MB | 1,048,576 (2^20) | 二进制兆字节 |
吉字节 | GB | 1,073,741,824 (2^30) | 二进制吉字节 |
太字节 | TB | 1,099,511,627,776 (2^40) | 二进制太字节 |
BitConverter
值类型转换为字节数组
支持的值类型有bool、char、double、short、int、long、float、ushort、uint、ulong
int value = 666;
var data = BitConverter.GetBytes(value);
字节数组转换为值类型
int value = 666;
var data = BitConverter.GetBytes(value);
var result = BitConverter.ToUInt16(data, 0);
Encoding
在进行文件存储、网络传输时,都采用UTF-8的编码格式,它相对其它格式来说在互联网通信中应用更广泛,更普遍,它包含各种语言符号。
字符串转换为字节数组
var str = "好好学习,天天向上";
var data = Encoding.UTF8.GetBytes(str);
字节数组转换为字符串
var str = "好好学习,天天向上";
var data = Encoding.UTF8.GetBytes(str);
var result = Encoding.UTF8.GetString(data);