SQL Image DataType - C#显示输出

时间:2009-09-01 22:34:26

标签: c# sql types

我的表格中有图像数据类型。当我使用SQL Server Management Studio进行查询时,我在结果窗口中得到以下内容,包括网格和文本。

0x255044462D312E320D0A0D0A332030206F [截断长度]

我试图在一个小小的c#程序中复制它。

然而,当我使用SqlCommand或LINQ时,我得到输出: JVBERi0xLjINCg0KMyAwIG9iag0KPDwNCi9FIDIxODgyDQovSCBbIDExNTAgMTUxIF0NCi9MIDIyM [TRUNCATED]

有什么想法,我需要做什么才能显示0x25 ...输出?我尝试过byte []转换和编码,但似乎找不到合适的。

如果我不清楚,请告诉我。

编辑: 我不是要显示图像,只是显示0x25 ......

思想?

2 个答案:

答案 0 :(得分:4)

string forDisplay = "0x" + BitConverter.ToString(yourByteArray).Replace("-", "");

答案 1 :(得分:1)

AFAIK,。Net不包含任何将任意字节数组作为单个十六进制数打印的方法。 (直到.Net 4.0的System.Numerics.BigInteger

但是,您应该能够写

"0x" + BitConverter.ToString(bytes).Replace("-", "")

请注意,这是非常低效的;如果你想在实际代码中执行此操作,请在循环中使用StringBuilder
编辑:像这样:

public static string ToHexString(this byte[] bytes) {
    var builder = new StringBuilder(bytes.Length * 2 + 2);

    builder.Append("0x");

    for (int i = 0; i < bytes.Length; i++)
        builder.Append(bytes[i].ToString("X2"));

    return builder.ToString();
}

<击> 2 nd 编辑:这是一个真正更快的新版本。 (是的,我知道你不需要它;无论如何它都在这里)

private static char ToHexDigit(int i) {
    if (i < 10) 
        return (char)(i + '0');
    return (char)(i - 10 + 'A');
}
public static string ToHexString(byte[] bytes) {
    var chars = new char[bytes.Length * 2 + 2];

    chars[0] = '0';
    chars[1] = 'x';

    for (int i = 0; i < bytes.Length; i++) {
        chars[2 * i + 2] = ToHexDigit(bytes[i] / 16);
        chars[2 * i + 3] = ToHexDigit(bytes[i] % 16);
    }

    return new string(chars);
}