0
如何解碼使用帶有ATL_BASE64_FLAG_NOPAD標誌的Base64Encode編碼的base 64編碼字符串。使用ATL Base64Encode解碼base 64編碼字符串ATL_BASE64_FLAG_NOPAD標誌
如何解碼使用帶有ATL_BASE64_FLAG_NOPAD標誌的Base64Encode編碼的base 64編碼字符串。使用ATL Base64Encode解碼base 64編碼字符串ATL_BASE64_FLAG_NOPAD標誌
假設僅僅意味着「不要把=
末」你可以直接添加填充:
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", "")
應該做的伎倆。
+1。注意:Base64允許空格成爲Base64字符串的一部分,除非您確定它使用「ATL_BASE64_FLAG_NOCRLF」標記進行編碼,或者您驗證該字符串僅包含Base64字符,否則簡單的長度可能不夠。 –
@AlexeiLevenkov:哦,好點。將編輯。 –