在C#中,当使用Convert.FromBase64String
方法将Base64字符串转换为字节数组时,如果Base64字符串的长度不是4的倍数,就会抛出FormatException
异常,提示“Base-64 字符数组或字符串的长度无效”。
要解决这个问题,可以在转换之前先检查Base64字符串的长度是否有效。以下是一个示例代码:
public static byte[] ConvertBase64StringToByteArray(string base64String)
{
// 移除Base64字符串中的空格、换行符等非Base64字符
base64String = base64String.Replace(" ", "+").Replace("\r", "").Replace("\n", "");
// 检查Base64字符串的长度是否是4的倍数
int mod4 = base64String.Length % 4;
if (mod4 != 0)
{
// 将Base64字符串的长度调整为4的倍数
base64String += new string('=', 4 - mod4);
}
// 转换Base64字符串为字节数组
byte[] byteArray = Convert.FromBase64String(base64String);
return byteArray;
}
使用上述方法,可以先移除Base64字符串中的非Base64字符(如空格、换行符等),然后检查字符串长度是否是4的倍数。如果不是,则通过添加=
字符将字符串长度调整为4的倍数。最后,再使用Convert.FromBase64String
方法将Base64字符串转换为字节数组。
请注意,示例代码中的ConvertBase64StringToByteArray
方法返回的是字节数组,您可以根据实际需求进行修改。