SqlServer中的十六进制数据在C#中隐式转换为bytearray。如何保持数据不变?

时间:2016-12-27 11:16:30

标签: c# arrays hex

这就是我们的数据保存在数据库中的方式:

enter image description here

我在数据表中获取数据库表并循环遍历。 相同的数据被隐式转换为字节数组。这是来自调试会话:

enter image description here

我希望数据不变。我会把它写到一个文件中。目前我可以使用row.ItemArray[0]访问bytearray。它的值是{byte[70]}。无法在row.ItemArray[0]上使用索引。 row.ItemArray[0][0]没有给您86。 反正我也不需要86。如果我将row.ItemArray[0]写入文件,则会显示System.Byte[]

1 个答案:

答案 0 :(得分:0)

为什么要将二进制数据转换为字符串。它永远不会奏效。试试这个

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.IO;


namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.dat";
        static void Main(string[] args)
        {
            DataTable datatable = new DataTable(); //just for testing, use your current table
            FileStream stream = new FileStream(FILENAME, FileMode.Create);
            BinaryWriter writer = new BinaryWriter(stream, Encoding.UTF8);
            foreach (DataRow row in datatable.AsEnumerable())
            {
                writer.Write(row.Field<byte[]>(0));
            }
            writer.Flush();
            writer.Close();
        }

    }

}