使用带有ATL_BASE64_FLAG_NOPAD标志的ATL Base64Encode解码基本64位编码的字符串

时间:2012-06-11 17:29:00

标签: c++ base64 atl

如何解码使用带有ATL_BASE64_FLAG_NOPAD标志的Base64Encode编码的base 64编码字符串。

1 个答案:

答案 0 :(得分: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", "")应该可以解决问题。