【问题标题】:Convert a hex string to base64将十六进制字符串转换为 base64
【发布时间】:2018-03-01 19:35:03
【问题描述】:
byte[] ba = Encoding.Default.GetBytes(input);
var hexString = BitConverter.ToString(ba);
hexString = hexString.Replace("-", "");
Console.WriteLine("Or: " + hexString + " in hexadecimal");

所以我明白了,现在如何将 hexString 转换为 base64 字符串?
我试过this,得到错误:

无法从字符串转换为字节[]

如果该解决方案适用于其他任何人,我做错了什么?

编辑:

 var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
 return System.Convert.ToBase64String(plainTextBytes);

我试过这个,但它 在第一个返回“无法将类型'byte []'隐式转换为'string'” 行,然后是“参数 1:无法从 'string' 转换为 'byte[]'”。

【问题讨论】:

标签: c# base64 hex


【解决方案1】:
public string HexToBase64(string strInput)
{
    try
    {
        var bytes = new byte[strInput.Length / 2];
        for (var i = 0; i < bytes.Length; i++)
        {
            bytes[i] = Convert.ToByte(strInput.Substring(i * 2, 2), 16);
        }
        return Convert.ToBase64String(bytes);
    }
    catch (Exception)
    {
        return "-1";
    }
}

相反:https://stackoverflow.com/a/61224900/3988122

【讨论】:

    【解决方案2】:

    您首先需要将您的十六进制字符串转换为字节数组,然后您可以将其转换为 base-64。

    要将十六进制字符串转换为 Base-64,您可以使用:

     public static string HexString2B64String(this string input)
     {
         return System.Convert.ToBase64String(input.HexStringToHex());
     }
    

    HexStringToHex 在哪里:

    public static byte[] HexStringToHex(this string inputHex)
    {
        var resultantArray = new byte[inputHex.Length / 2];
        for (var i = 0; i < resultantArray.Length; i++)
        {
            resultantArray[i] = System.Convert.ToByte(inputHex.Substring(i * 2, 2), 16);
        }
        return resultantArray;
    }
    

    【讨论】:

    • 超级好用:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-27
    • 1970-01-01
    • 1970-01-01
    • 2018-08-20
    • 2018-01-31
    • 2018-01-22
    • 1970-01-01
    相关资源
    最近更新 更多