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

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

【问题讨论】:

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

标签: c# .net c++-cli hex


【解决方案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://stackoverflow.com/a/61224761/3988122

    【讨论】:

    • hex.Replace("-", "").ToLower();这条线很重要
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-16
    • 2011-10-11
    • 2010-09-09
    • 1970-01-01
    • 1970-01-01
    • 2018-02-27
    • 2018-09-04
    相关资源
    最近更新 更多