varbinary文本表示到byte []

时间:2011-09-27 00:38:38

标签: c# sql-server

在C#中,如何将SQL Server Management Studio显示的文本输出作为varbinary列的内容,并将该文本转换为存储在列中的byte []?

2 个答案:

答案 0 :(得分:33)

好的,所以你想要复制并粘贴SSMS中显示的varbinary列的值(例如“0x6100730064006600”),并从C#中获取它的字节[]?

这很简单 - 0x之后的部分只是十六进制值(每个2个字符)。所以,你取每一对,将它转换为一个指定基数为16(十六进制)的数字,并将其添加到一个列表中,如下所示:

string stringFromSQL = "0x6100730064006600";
List<byte> byteList = new List<byte>();

string hexPart = stringFromSQL.Substring(2);
for (int i = 0; i < hexPart.Length / 2; i++)
{
    string hexNumber = hexPart.Substring(i * 2, 2);
    byteList.Add((byte)Convert.ToInt32(hexNumber, 16));
}

byte [] original = byteList.ToArray();

免责声明 - 相当狡猾且不是最优的代码,我只是为了演示而将它们一起入侵(它应该可以工作)。

答案 1 :(得分:4)

    SqlConnection conn = new SqlConnection(yourConnectionString);
    SqlCommand cmd = new SqlCommand("select col from yourtable", conn);
    SqlDataReader reader = cmd.ExecuteReader();
    if (reader.HasRows)
    {
        byte[] bytes = (byte[])reader[0];
    }
    reader.Close();
    conn.Close();