可变二进制文本表示为byte[]

本文关键字:byte 表示 二进制 文本 | 更新日期: 2023-09-27 18:09:59

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

可变二进制文本表示为byte[]

好的,那么您想要复制并粘贴SSMS中显示的varbinary列的值(例如:"0x6100730064006600"),并从c#中获得字节[]?

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

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();

免责声明-相当不可靠且不理想的代码,我只是为了演示目的而将其拼凑在一起(尽管它应该可以工作)。

    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();