直接上代码
using System;
using System.Text;
using System.Data;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
namespace byte与datatable相互转换
{
class Program
{
static void Main(string[] args)
{
DataTable dt = new DataTable();
DataColumn dc1 = new DataColumn("序号",Type.GetType("System.String"));
DataColumn dc2 = new DataColumn("用户名");
DataColumn dc3 = new DataColumn("密码");
dt.Columns.Add(dc1);
dt.Columns.Add(dc2);
dt.Columns.Add(dc3);
DataRow dr = dt.NewRow();
dr["序号"] = "1";
dr["用户名"] = "username";
dr["密码"] = "pwd";
dt.Rows.Add(dr);
byte[] bytes = DataTableToByte(dt);
Console.WriteLine("转换为byte[]" + Encoding.UTF8.GetString(bytes));
Console.WriteLine("====================================");
Console.WriteLine("转换为DataTable");
DataTable dt1 = ByteToDataTable(bytes);
Console.Write("序号" + "\t");
Console.Write("用户名" + "\t");
Console.Write("密码");
Console.Write(Environment.NewLine);
foreach (DataRow dr1 in dt1.Rows)
{
Console.Write(dr1["序号"] + "\t");
Console.Write(dr1["用户名"] + "\t");
Console.Write(dr1["密码"]);
Console.Write(Environment.NewLine);
}
Console.ReadLine();
}
/// <summary>
/// Byte转化为DataTable
/// </summary>
/// <param name="bytes"></param>
/// <returns></returns>
private static DataTable ByteToDataTable(byte[] bytes)
{
DataTable dt;
using (MemoryStream memoryStream = new MemoryStream(bytes))
{
BinaryFormatter binaryFormatter = new BinaryFormatter();
dt = (DataTable)binaryFormatter.Deserialize(memoryStream);
}
return dt;
}
/// <summary>
/// DataTable转化为Byte[]
/// </summary>
/// <param name="dt"></param>
/// <returns></returns>
private static byte[] DataTableToByte(DataTable dt)
{
byte[] bytes;
using (MemoryStream memoryStream = new MemoryStream())
{
BinaryFormatter binaryFormatter = new BinaryFormatter();
binaryFormatter.Serialize(memoryStream, dt);
bytes = memoryStream.GetBuffer();
}
return bytes;
}
}
}