Base64字符串和十六进制之间的转换

10

我在我的C++/CLI项目中使用ToBase64String方法,它可以生成像/MnwRx7kRZEQBxLZEkXndA==这样的字符串。我想将此字符串转换为十六进制表示法,请问我该如何在C++/CLI或C#中进行?


将字符串转换为Base64,然后再转换为十六进制似乎很愚蠢。你可以直接将源代码转换为十六进制。除非你有其他问题... - xanatos
除非你只有base64字符串...也许他没有源代码。如果是这样,那我同意。 - bryanmac
具体而言,在汉斯的回答这里中,摆脱ToBase64String并改用BitConverter::ToString - Ben Voigt
3个回答

32

FromBase64String 函数将把 string 转换为 byte 数组。

byte[] bytes = Convert.FromBase64String(string s);

接着,BitConverter.ToString()会将一个字节数组转换为十六进制字符串(byte[] to hex string)。

string hex = BitConverter.ToString(bytes);

0

将字符串转换为字节数组,然后进行字节到十六进制转换

string stringToConvert = "/MnwRx7kRZEQBxLZEkXndA==";

byte[] convertedByte = Encoding.Unicode.GetBytes(stringToConvert);

string hex = BitConverter.ToString(convertedByte);

Console.WriteLine(hex);

2
我认为unicode.getbytes会将该字符串视为Unicode字符,而你想要的是将其转换为Base64。我认为Convert.FromBase64String()正好可以做到这一点... - bryanmac

0
public string Base64ToHex(string strInput)
{
    try
    {
        var bytes = Convert.FromBase64String(strInput);
        var hex = BitConverter.ToString(bytes);
        return hex.Replace("-", "").ToLower();
    }
    catch (Exception)
    {
        return "-1";
    }
}

相反地:https://stackoverflow.com/a/61224761/3988122

hex.Replace("-", "").ToLower(); 这行代码非常重要。 - Mohsin Khan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接