如何解码使用带有ATL_BASE64_FLAG_NOPAD标志的Base64Encode编码的base 64编码的字符串。
最佳答案
假设这只是表示“不要在=
末尾添加”,则可以直接添加填充:
public static string Base64PadEnd(string unpadded)
{
switch(unpadded.Length % 4)
{
case 0: return unpadded;
case 2: return unpadded + "==";
case 3: return unpadded + "=";
default: throw new ArgumentException("Invalid unpadded base64");
}
}
(base64的工作方式,永远不要以未填充的值结尾,最后一个块为1个字符。)
添加填充后,只需照常使用
Convert.FromBase64String
。编辑:如注释中所述,如果您的base64字符串包含空格,则应在添加填充之前先将其删除。一个简单的
text = Regex.Replace(text, @"\s", "")
应该可以解决问题。