Binary
SON 和 XML 是人能看懂的文本,但占空间大、速度慢。二进制是机器的语言(010101),直接存数字本身,体积小、速度快。BinaryWriter 把数据打成二进制包存起来,BinaryReader 再拆开还原。
⚠️ 注意:旧的 BinaryFormatter 因为安全问题已被淘汰,现在推荐用 BinaryReader/Writer。
表格
工具 作用
BinaryWriter 把数字、文字打成二进制包写入文件
BinaryReader 按顺序从二进制包里读出数据
BitConverter 把 int、double 等转成字节数组
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
案例 1:BinaryWriter 写二进制文件
csharp
using System.IO;
using var fs = new FileStream("data.bin", FileMode.Create);
using var writer = new BinaryWriter(fs);
writer.Write(100);
writer.Write("Hello");
writer.Write(3.14);
writer.Write(true);
Console.WriteLine("二进制写入完成");
像往压缩包里塞东西,依次放入整数、字符串、小数、布尔值,打包存进 data.bin。
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
案例 2:BinaryReader 读二进制文件
csharp
using System.IO;
using var fs = new FileStream("data.bin", FileMode.Open);
using var reader = new BinaryReader(fs);
int n = reader.ReadInt32();
string s = reader.ReadString();
double d = reader.ReadDouble();
bool b = reader.ReadBoolean();
Console.WriteLine($"{n} {s} {d} {b}");
拆包时必须按写入的顺序和类型读取,先读整数、再读字符串……顺序错了就会乱码。
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
案例 3:BitConverter 把数字变字节
csharp
int num = 65;
byte[] bytes = BitConverter.GetBytes(num);
Console.WriteLine(BitConverter.ToString(bytes));
Console.WriteLine("还原:" + BitConverter.ToInt32(bytes, 0));
GetBytes 把数字切成字节,ToInt32 再把字节拼回数字。适合处理网络传输或加密场景。

浙公网安备 33010602011771号