如何解码使用带有 ATL_BASE64_FLAG_NOPAD 标志的 Base64Encode 编码的 base 64 编码字符串。
问问题
1538 次
1 回答
3
假设这只是意味着“不要放在=
最后”,您可以直接添加填充:
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", "")
的应该做的伎俩。
于 2012-06-11T17:31:33.840 回答