Base64String与十六进制之间的转换

Posted

技术标签:

【中文标题】Base64String与十六进制之间的转换【英文标题】:Conversion between Base64String and Hexadecimal 【发布时间】:2011-12-08 17:16:07 【问题描述】:

我在我的 C++/CLI 项目中使用 ToBase64String 来提供类似 /MnwRx7kRZEQBxLZEkXndA== 的字符串我想将此字符串转换为十六进制表示,我如何在 C++/CLI 或 C# 中做到这一点?

【问题讨论】:

将字符串转换为 Base64 然后十六进制似乎很愚蠢。你可以直接十六进制源。除非你有其他问题... 除非你只有base64字符串......也许他没有来源。如果是这样,那我同意。 具体来说,在 Hans 的回答 here 中,去掉 ToBase64String 并改用 BitConverter::ToString 【参考方案1】:

FromBase64String 将把string 带到bytes

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

然后,BitConverter.ToString() 会将字节数组转换为十六进制字符串 (byte[] to hex string)

string hex = BitConverter.ToString(bytes);

【讨论】:

【参考方案2】:

将字符串转换为字节数组,然后执行byte to hex conversion

string stringToConvert = "/MnwRx7kRZEQBxLZEkXndA==";

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

string hex = BitConverter.ToString(convertedByte);

Console.WriteLine(hex);

【讨论】:

我认为 unicode.getbytes 会将该字符串视为 unicode 字符,而您希望将其转换为 Base64。我认为 Convert.FromBase64String() 正是这样做的......【参考方案3】:
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://***.com/a/61224761/3988122

【讨论】:

hex.Replace("-", "").ToLower();这条线很重要

以上是关于Base64String与十六进制之间的转换的主要内容,如果未能解决你的问题,请参考以下文章

二进制数据和字符串之间转换

OCR-PIL.Image与Base64 String的互相转换

图片和Base64之间的转换

如何将整数转换为 Python 中最短的 url 安全字符串?

如何将一串十六进制值转换为base64字符串

请教二进制流能否转换成base64