将十六进制字符串转换为base64

时间:2017-09-20 16:21:30

标签: c# base64 hex

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'”      line,然后“Argument 1:无法从'string'转换为'byte []'”。

2 个答案:

答案 0 :(得分:5)

首先需要将hexstring转换为字节数组,然后可以将其转换为base-64。

要从hexstring转换为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;
}

答案 1 :(得分:-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