首页  > 教育解读  > c#+怎么储存二进制数

c#+怎么储存二进制数

2025-05-02 19:55:01
未来是拼出来的
未来是拼出来的已认证

未来是拼出来的为您分享以下优质知识

在C中存储二进制数主要有以下两种方式,具体选择取决于应用场景和需求:

一、直接存储基本数据类型(推荐)

C支持直接将`byte`、`int32`等基础数据类型以二进制形式存储,操作简单且效率较高。例如:

```csharp

byte b = 0b01111110; // 二进制字面量

string bstr = "0111110"; // 二进制字符串

byte parsedB = Convert.ToByte(bstr, 2); // 转换为byte类型

```

适用于存储单个数值或少量数据。

二、序列化存储自定义对象(灵活但复杂)

当需要存储复杂对象时,可通过序列化将对象转换为二进制数据。主要方法包括:

使用`BinaryFormatter`(较旧且存在安全风险)

```csharp

BinaryFormatter formatter = new BinaryFormatter();

using (FileStream fs = new FileStream("data.tifs", FileMode.Create)) {

formatter.Serialize(fs, obj);

}

```

*注意:`BinaryFormatter`已被弃用,不建议在新项目中使用。*

使用`BinaryWriter`手动写入

```csharp

byte[] buffer = ChangeObjectToByte(obj);

using (FileStream fs = new FileStream("data.tifs", FileMode.Create)) {

BinaryWriter writer = new BinaryWriter(fs, Encoding.Unicode);

writer.Write(buffer);

}

```

需自行实现`ChangeObjectToByte`方法,将对象转换为字节数组,代码复杂度较高。

使用`System.Runtime.Serialization`命名空间(推荐)

通过`[Serializable]`属性标记类,并使用`BinaryFormatter`(需谨慎)或`MessagePack`等现代序列化库,安全性更高且兼容性更好。

总结建议

基础数据:

优先使用直接赋值或二进制字面量,简单高效。

自定义对象:避免使用`BinaryFormatter`,可考虑`MessagePack`或手动序列化,但需权衡代码复杂度与安全性。