【问题标题】:Binary to Base64 (Delphi)二进制到 Base64 (Delphi)
【发布时间】:2011-04-26 19:11:20
【问题描述】:

如何获取exe 文件的内容并将其转换为Base64 编码?

编辑

我使用D2010,我想知道这到底是怎么可能的?

  • open an exe file
  • convert its content into base64

【问题讨论】:

    标签: delphi encoding delphi-2010 base64


    【解决方案1】:

    在 Delphi 2009/2010/XE 中有一个单元 EncdDecd.pas(Delphi XE2 为 Soap.EncdDecd.pas)包含函数 EncodeBase64 和 DecodeBase64。您可以将 exe 文件加载到内存流中,然后调用 EncodeBase64。

    function EncodeFile(const FileName: string): AnsiString;
    var
      stream: TMemoryStream;
    begin
      stream := TMemoryStream.Create;
      try
        stream.LoadFromFile(Filename);
        result := EncodeBase64(stream.Memory, stream.Size);
      finally
        stream.Free;
      end;
    end;
    

    【讨论】:

    • 对于那些使用古老的 Delphi 版本的人,在 Indy 的 Mime Encoding 的东西中可以找到等效的函数。
    • @Warren:具体来说,Indy 的 IdCoderMIME 单元包含支持 base64 的类。
    • 还有来自 Crypt32.dll (WinXP+) 的 CryptBinaryToString 函数,适用于旧版 Delphi 版本。
    • 请注意,EncdDecd.pas 单元中的 EncodeBase64 将每 75 个 base64 编码字符插入 2 个 AnsiChar (#$D#$A == CRLF)。你没有办法告诉它不要这样做。如果你想要这个额外的“智能”,至少java版本有一个布尔值来控制。希望对您有所帮助。
    • 在以后的Delphi版本中(不确定从哪里开始):使用System.NetEncoding; TNetEncoding.Base64.EncodeBytesToString(Stream.Memory, Stream.Size)
    【解决方案2】:

    在古代Delphi版本中,可以使用synapse(link here)

    只需将synacode.pas 放入您的使用中即可调用EncodeBase64/EncodeBase64。

    干杯

    【讨论】:

    • Synapse 不附带任何版本的 Windows。也许你的意思是印地?
    • @Marco van de Voort。不,我是说突触。查看链接。
    • 我的错,我的意思是突触没有与 Delphi 打包,indy 有。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    相关资源
    最近更新 更多