在C#中,如何将SQL Server Management Studio显示的文本输出作为varbinary列的内容,并将该文本转换为存储在列中的byte []?
Dan*_*l B 35
好的,所以你想要复制并粘贴SSMS中显示的值为varbinary列(例如"0x6100730064006600"),并从C#中获取它的byte []?
这很简单 - 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();
Run Code Online (Sandbox Code Playgroud)
免责声明 - 相当狡猾和不理想的代码,我只是为了演示目的将它们一起入侵(它应该可以工作).
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();
Run Code Online (Sandbox Code Playgroud)