好吧,这让我疯了,哈哈。
我有一个Base64字符串,我正在尝试使用TIdDecoderMIME将其解码为TMemoryStream。
我目前的代码如下:
Var MStream:TMemoryStream; Decoder:TIdDecoderMIME;
begin
Decoder := TIdDecoderMIME.Create(nil);
MStream := TMemoryStream.Create;
Decoder.DecodeToStream(BSting,MStream);
end;
其中BString = My Base64字符串。
现在,当代码运行时,我收到一条错误消息,说明" DecodeToString中的大小不均。"
有什么想法吗?
非常感谢任何帮助。感谢。
答案 0 :(得分:4)
您向DecodeToStream
函数传递一个Base64字符串,其长度不是4的倍数。换句话说,您传递的字符串无效。
答案 1 :(得分:1)
Base64字符串通常用尾部“=”符号填充,以确保它们的长度是4的倍数。
有些解码器会尝试纠正丢失的填充字符,而其他解码器则不会。请参阅StackOverflow问题“Remove trailing “=” when base64 encoding”
TIdDecoderMime对象通过确保输入是4的倍数来验证输入 - 如果填充字符包含在输入中,它将成为输入。