C# 将对象转换成字节数组(二进制数据)
在将自定义对象或者数组等这样的数据存储到数据库时往往需要转换成二进制字节,尤其是在一些O/RM数据库框架中,下面是转换的函数,一个是将对象转换成二进制字节数组,另一个是将从数据库中读取的二进制流转换成程序中的对象。 这里参考的资源来源, C#序列化数据对象。它是将对象先转换成字节数组,然后再转换成Base64字符串了,字符串也可以存储到数据库中,但是不如直接将字节数组转换成Blob数据库对象简单: using System; using System.Collections.Generic; using System.Linq; using System.Text; //引入三个命名空间 using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; using System.IO; namespace Logistics { public class SerializeObjectToString { //将Object类型对象(注:必须是可序列化的对象)转换为二进制序列字符串 public string SerializeObject(object obj) { IFormatter formatter = new BinaryFormatter(); string result = string.Empty; using (MemoryStream stream = new MemoryStream()) { formatter.Serialize(stream, obj); byte[] byt = new byte[stream.Length]; byt = stream.ToArray(); //result = Encoding.UTF8.GetString(byt, 0, byt.Length); result = Convert.ToBase64String(byt); stream.Flush(); } return result; } //将二进制序列字符串转换为Object类型对象 public object DeserializeObject(string str) { IFormatter formatter = new BinaryFormatter(); //byte[] byt = Encoding.UTF8.GetBytes(str); byte[] byt = Convert.FromBase64String(str); object obj = null; using (Stream stream = new MemoryStream(byt, 0, byt.Length)) { obj = formatter.Deserialize(stream); } return obj; } } } ===================下面是直接转换成字节的函数========================= using System; using System.Collections.Generic; using System.Linq; using System.Text; //引入三个命名空间 using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; using System.IO; namespace Logistics { public class SerializeObjectToString { //将Object类型对象(注:必须是可序列化的对象)转换为二进制序列字符串 public byte[] SerializeObject(object obj) { IFormatter formatter = new BinaryFormatter(); byte[] result = null; using (MemoryStream stream = new MemoryStream()) { formatter.Serialize(stream, obj); byte[] byt = new byte[stream.Length]; byt = stream.ToArray(); result=byt; stream.Flush(); } return result; } //将二进制序列字符串转换为Object类型对象 public object DeserializeObject(byte[] bt) { IFormatter formatter = new BinaryFormatter(); object obj = null; using (Stream stream = new MemoryStream(bt, 0, bt.Length)) { obj = formatter.Deserialize(stream); } return obj; } } } ———————————————— 版权声明:本文为CSDN博主「tushenfengle」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/tushenfengle/article/details/129356455
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)