当前位置:首页C# > 正文

C# 将对象转换成字节数组(二进制数据)

作者:野牛程序员:2024-07-15 14:31:55C#阅读 2409
C# 将对象转换成字节数组(二进制数据)

在C#中,可以使用BinaryFormatter类将对象序列化为字节数组(即将对象转换为二进制数据)。以下是一个示例代码:

using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

[Serializable]
public class MyObject
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public class Program
{
    public static void Main()
    {
        MyObject obj = new MyObject { Id = 1, Name = "Example" };
        byte[] byteArray = ObjectToByteArray(obj);
        Console.WriteLine(BitConverter.ToString(byteArray));
    }

    public static byte[] ObjectToByteArray(object obj)
    {
        if (obj == null)
            return null;

        BinaryFormatter bf = new BinaryFormatter();
        using (MemoryStream ms = new MemoryStream())
        {
            bf.Serialize(ms, obj);
            return ms.ToArray();
        }
    }
}

此代码包括以下几个步骤:

  1. 定义一个可序列化的类(即MyObject类,带有[Serializable]特性)。

  2. 创建一个对象实例,并设置其属性。

  3. 调用ObjectToByteArray方法,将对象转换为字节数组。

  4. ObjectToByteArray方法中,使用BinaryFormatter将对象序列化到内存流中,然后将内存流转换为字节数组。

需要注意的是,BinaryFormatter已经被标记为不安全,建议使用更安全的序列化方法,如System.Text.JsonSystem.Runtime.Serialization.Json。以下是使用System.Text.Json的示例:

using System;
using System.Text.Json;

[Serializable]
public class MyObject
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public class Program
{
    public static void Main()
    {
        MyObject obj = new MyObject { Id = 1, Name = "Example" };
        byte[] byteArray = JsonSerializer.SerializeToUtf8Bytes(obj);
        Console.WriteLine(BitConverter.ToString(byteArray));
    }
}

此代码使用JsonSerializer.SerializeToUtf8Bytes方法将对象序列化为字节数组,提供了更安全的替代方案。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • C#
  • 最新推荐

    热门点击