如何将字节[]从实体框架转换为单个十六进制字符串

时间:2019-03-08 02:27:14

标签: c# asp.net sql-server entity-framework

很抱歉,如果这是重复的邮件,我很搜索。我将在下面发布一些我尝试过的事情。

我正在使用Entity Framework从SQL Server数据库中提取一个varbinary列。实体框架返回byte[]

当我使用SSMS查询数据库时,这就是我得到的(也是我试图在C#中得到的):0x540FA51A000706010096000B64FFAEC1

数据库编码为UTF8。提前致谢。

以下是我尝试过的一些事情:

public static string ByteArrayToString(byte[] ba)
{
    StringBuilder hex = new StringBuilder(ba.Length * 2);

    foreach (byte b in ba)
        hex.AppendFormat("{0:x2}", b);

    return hex.ToString();
}

public static string ByteArrayToString(byte[] ba)
{
    if (BitConverter.IsLittleEndian)
        Array.Reverse(ba);

    string hex = BitConverter.ToString(ba);
    return hex.Replace("-", "");
}

private static string ByteArrayToHex(byte[] barray)
{
    char[] c = new char[barray.Length * 2];
    byte b;

    for (int i = 0; i < barray.Length; ++i)
    {
        b = ((byte)(barray[i] >> 4));
        c[i * 2] = (char)(b > 9 ? b + 0x37 : b + 0x30);
        b = ((byte)(barray[i] & 0xF));
        c[i * 2 + 1] = (char)(b > 9 ? b + 0x37 : b + 0x30);
    }

    return new string(c);
}

0 个答案:

没有答案