C# 如何显示变量二进制字段数据

C# 如何显示变量二进制字段数据,c#,asp.net,sql,sql-server,C#,Asp.net,Sql,Sql Server,我有一个数据类型为varBinary的数据库字段。现在在gridView中,我想显示这些数据。但是我得到了输出: System.Byte[] 不是价值 0x2C6D1A 在数据库中 请帮助解决此问题。您可以使用该类格式化字节数组以用于显示: string forDisplay = "0x" + BitConverter.ToString(yourByteArray).Replace("-", string.Empty); 如果您不想直接转换为字符串,则需要将字节数组转换为各种其他类

我有一个数据类型为varBinary的数据库字段。现在在gridView中,我想显示这些数据。但是我得到了输出:

System.Byte[]
不是价值

0x2C6D1A
在数据库中

请帮助解决此问题。

您可以使用该类格式化字节数组以用于显示:

string forDisplay =
    "0x" + BitConverter.ToString(yourByteArray).Replace("-", string.Empty);
如果您不想直接转换为字符串,则需要将字节数组转换为各种其他类型

编辑

如果要将某些查询结果直接绑定到GridView控件,则在查询本身中将VARBINARY列转换为VARCHAR可能会更容易:

SELECT CONVERT(VARCHAR(MAX), your_varbinary_column, 1) AS for_display
FROM your_table

注意:这种类型的转换(从VARBINARY到“0x1234AB”格式的VARCHAR)仅在SQL Server 2008中正确工作。早期版本的SQL Server只将二进制数据直接转换为字符数据。

如果没有任何明显的可用信息,可能只需循环:

    public static string ToHexString(byte[] raw)
    { // could also be an extension method
        StringBuilder sb = new StringBuilder("0x", 2 + (raw.Length * 2));
        for (int i = 0; i < raw.Length; i++)
        {
            sb.Append(raw[i].ToString("X2"));
        }
        return sb.ToString();
    }

你能再具体一点吗。很抱歉,我无法理解在何处添加这行代码:string forDisplay=0x+BitConverter.ToStringyourByteArray.Replace-,string.Empty;将数据从sql server绑定到datagrid的最佳方法是什么?我需要给用户更新文件的选项用新文件替换现有文件,我需要先从sql server加载现有文件,然后给用户替换文件的选项,还是可以在不将其加载到Web应用程序的情况下进行替换?@RehanMehdi这似乎是一个完全无关的问题;我会把它扔进一个对象模型…谢谢你的回复。你能帮我写一下吗。我不熟悉对象编程。我应该用我的代码开始一个新问题吗?@Rehan这听起来不是一个非常具体的问题。。。你可以尝试一下,但要想获得好评,需要比这更具体一点。
    class HexConverter : TypeConverter // untested
    {
        public override object ConvertTo(ITypeDescriptorContext context,
            System.Globalization.CultureInfo culture,
            object value, Type destinationType)
        {
            if (destinationType == typeof(string))
            {
                return ToHexString((byte[])value);
            }
            return base.ConvertTo(context, culture, value, destinationType);
        }
    }