datatable 转为byte[] 以及把byte[]转为datatable 其实就是系列化与反系列的问题.实际上所有的类都可以使用byte[]形式表示,因为他在内存中的数据本身就是byte
而对于你说的String进行
System.Text.Encoding.BigEndianUnicode.GetBytes
System.Text.Encoding.Default.GetBytes 等等
这个除了此还有编码读取的功能,对于文本的编码,没有办法,各个国家为了自己的文字存储占更少空间都有各自的标准,对其它国家的文字就支持不好了,当然也有支持各国文字的utf-8等
第一种方法:
请你参考一下,在vs 2008下运行 通过
引用命名空间
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
代码段:
DataTable dt = new DataTable(); //用来转成byte[]的实例
dt.Columns.Add("a");
dt.Rows.Add("b"); //添加一条测试数据 b
System.IO.MemoryStream memory = new MemoryStream();//使用内存流来存这些byte[]
BinaryFormatter b = new BinaryFormatter();
b.Serialize(memory,dt); //系列化datatable,MS已经对datatable实现了系列化接口,如果你自定义的类要系列化,实现IFormatter 就可以类似做法
byte[] buff = memory.GetBuffer(); //这里就可你想要的byte[],可以使用它来传输
memory.Close();
//假如接收的仍是这个byte[] buff,这样来反系列化
DataTable dt1 = (DataTable)b.Deserialize(new MemoryStream(buff)); //dt1是byte[]转回的datatable
Response.Write(dt1.Rows[0][0].ToString());
//输出的是 "b"
第二种方法
MemoryStream memory = new MemoryStream();
System.Xml.XmlTextWriter xtw = new System.Xml.XmlTextWriter(memory, System.Text.Encoding.UTF8);
dt.WriteXml(memory);
int count = (int)memory.Length;
byte[] temp = new byte[count];
memory.Seek(0, SeekOrigin.Begin);
memory.Read(temp, 0, count);
string returnValue = Convert.ToBase64String(temp);
return returnValue;
读取字符串信息
byte[] bstr = Convert.FromBase64String(strType);
System.Text.Encoding ed=System.Text.Encoding.UTF8;
string returnValue = ed.GetString(bstr, 0, bstr.Length).Trim();
// 把字节转换成datatable
MemoryStream ms=new MemoryStream(bstr);
System.Xml.XmlTextReader xtw = new System.Xml.XmlTextReader(ms);
ds.ReadXml(xtw);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器