首页 > 解决方案 > 如何将字节 [] 从实体框架转换为单个十六进制字符串

问题描述

抱歉,如果这是重复的,我在搜索方面很糟糕。我将在下面发布一些我尝试过的东西。

我正在使用实体框架从 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);
}

标签: c#asp.netsql-serverentity-framework

解决方案


推荐阅读