Delphi 7 - 使用TIdDecoderMIME解码Base64

时间:2012-09-13 03:09:05

标签: delphi base64 delphi-7 memorystream

好吧,这让我疯了,哈哈。

我有一个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中的大小不均。"

有什么想法吗?

非常感谢任何帮助。感谢。

2 个答案:

答案 0 :(得分:4)

您向DecodeToStream函数传递一个Base64字符串,其长度不是4的倍数。换句话说,您传递的字符串无效。

答案 1 :(得分:1)

Base64字符串通常用尾部“=”符号填充,以确保它们的长度是4的倍数。

有些解码器会尝试纠正丢失的填充字符,而其他解码器则不会。请参阅StackOverflow问题“Remove trailing “=” when base64 encoding

TIdDecoderMime对象通过确保输入是4的倍数来验证输入 - 如果填充字符包含在输入中,它将成为输入。