2012-09-13 19 views
5

これはまあまあナッツ、笑を運転しています。Delphi 7 - TIdDecoderMIMEを使用したデコードBase64

私はBase64文字列を持っており、それをTIdDecoderMIMEを使用してTMemoryStreamにデコードしようとしています。次のように

私の現在のコードは次のとおりです。BStringマイBase64文字列を=

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

コードが実行されると、「DecodeToStringで不均一なサイズ」というエラーメッセージが表示されます。

アイデア?

ご協力いただきまして誠にありがとうございます。ありがとう。

答えて

4

DecodeToStreamには、長さが4の倍数ではないBase64文字列が渡されます。つまり、渡す文字列が無効です。

1

のBase64文字列は、通常、その長さは、いくつかのデコーダは、しばらく他の人はいないでしょう欠落しているパディング文字を修正しようとします。4.

の倍数であることを確認するために、「=」の兆候を末尾に埋め込まれます。 StackOverflowの質問を参照してください "Remove trailing “=” when base64 encoding"

TIdDecoderMimeオブジェクトは、4の倍数であることを確認して入力を検証します。入力にパディング文字が含まれているかどうかが検証されます。

関連する問題