关于c#:将十六进制字符串转换为base64

Convert a hex string to base64

1
2
3
4
byte[] ba = Encoding.Default.GetBytes(input);
var hexString = BitConverter.ToString(ba);
hexString = hexString.Replace("-","");
Console.WriteLine("Or:" + hexString +" in hexadecimal");

所以我得到了这个,现在我如何将hexString转换成base64字符串?我试过了,有个错误:

Cannot convert from string to byte[]

如果这个解决方案对其他人有效,我做错了什么?

编辑:

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

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


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

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

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

其中hexstringtohex是:

1
2
3
4
5
6
7
8
9
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;
}