C#如何将unHex转换为String

c#

我正在尝试将 unHex 值转换为字符串,但它不起作用。

我有以下价值 0x01BB92E7F716F55B144768FCB2EA40187AE6CF6B2E52A64F7331D0539507441F7D770112510D679F0B310116B0D709E049A19467672FFA532A7C30DFB72

结果我希望是这样

但是执行下面的函数会显示这个结果

»’ Ç ÷ õ [Ghü²ê @ zæÏk.R¦Os1ÐS • D} w Q gŸ 1 ° × àI¡ ”gg / úS * | 0ß ·) = ¤

知道如何按预期提取信息

public static string Hex2String (string input)
{
    var builder = new StringBuilder ();
    for (int i = 0; i < socketLength; i + = 2)
    {
        // throws an exception if not properly formatted
        string hexdec = input.Substring (i, 2);
        int number = Int32.Parse (hexdec, NumberStyles.HexNumber);
        char charToAdd = (char) number;
        builder.Append (charToAdd);
    }
    return builder.ToString ();
}

回答

您的结果是 base64 编码的。Base64是一种将字节数组转换为人类可读字符的方法。

您的代码尝试获取这些原始字节并将它们转换为字符,但并非所有字节值都是有效的可打印字符:有些是控制字符,有些无法打印,等等。

相反,让我们将十六进制字符串转换为字节数组,然后将该字节数组转换为 base64 字符串。

string input = "01BB92E7F716F55B144768FCB2EA40187AE6CF6B2E52A64F7331D0539507441F7D770112510D679F0B310116B0D709E049A19467672FFA532A7C30DFB72";
byte[] bytes = new byte[input.Length / 2];

for (int i = 0; i < bytes.Length; i++)
{
    bytes[i] = byte.Parse(input.Substring(i * 2, 2), NumberStyles.HexNumber);
}

string result = Convert.ToBase64String(bytes);

这导致:

AbuS5/cW9VsUR2j8supAGHrmz2suUqZPczHQU5UHRB99dwESUQ1nnwsxARaw1wngSaGUZ2cv+lMqfDDftw==

看到它在这里运行。


以上是C#如何将unHex转换为String的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>