Представление варбинового текста в байт []

В С#, как я могу взять текстовый вывод, который SQL Server Management Studio показывает как содержимое столбца varbinary, и превратить этот текст в байт [], который хранится в столбце?

Ответ 1

ОК, поэтому вы хотите скопировать и вставить значение, отображаемое в SSMS для столбца varbinary (например, "0x6100730064006600" ), и получить из него байта [] в С#?

Это довольно легко - часть после 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();

Отказ от ответственности - довольно изворотливый и неоптимальный код, я просто взломал его для демонстрационных целей (он должен работать, хотя).

Ответ 2

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