【问题标题】:Delphi 7 - Decode Base64 Using TIdDecoderMIMEDelphi 7 - 使用 TIdDecoderMIME 解码 Base64
【发布时间】:2012-09-13 23:45:30
【问题描述】:

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

我有一个 Base64 字符串,正在尝试使用 TIdDecoderMIME 将其解码为 TMemoryStream。

我目前的代码如下:

Var MStream:TMemoryStream; Decoder:TIdDecoderMIME;
begin
  Decoder := TIdDecoderMIME.Create(nil);
  MStream := TMemoryStream.Create;
  Decoder.DecodeToStream(BSting,MStream);
end;

其中 BString = 我的 Base64 字符串。

现在运行代码时,我收到一条错误消息,提示“DecodeToString 中的大小不均匀”。

有什么想法吗?

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

【问题讨论】:

    标签: delphi base64 delphi-7 memorystream


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2015-07-14
        • 2013-10-05
        • 2020-11-02
        • 1970-01-01
        • 2013-09-14
        • 1970-01-01
        • 2015-04-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多