二进制到Base64(Delphi)

Ker*_*mia 19 delphi base64 encoding delphi-2010

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

编辑

我用D2010,我想知道它究竟是怎么可能的?

  • open an exe file
  • convert its content into base64

Uwe*_*abe 61

在Delphi 2009/2010/XE中,有单元EncdDecd.pas(Soap.EncdDecd.pas用于Delphi XE2)包含函数EncodeBase64DecodeBase64.您可以将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;
Run Code Online (Sandbox Code Playgroud)

  • 请注意,EncdDecd.pas单元中的EncodeBase64每75个base64编码的字符将插入2个AnsiChar(#$ D#$ A == CRLF).你无法告诉它不要这样做.至少java版本有一个布尔值来控制你是否想要这个额外的"智能".希望能帮助到你. (8认同)
  • 对于那些使用古代Delphi版本的人来说,在Indy的Mime编码中可以找到相同的函数. (4认同)
  • 在Delphi的更高版本中(不确定它的起始位置):使用System.NetEncoding; TNetEncoding.Base64.EncodeBytesToString(Stream.Memory,Stream.Size) (4认同)
  • Crypt32.dll(WinXP +)的CryptBinaryToString函数也适用于旧版Delphi版本的人. (3认同)
  • @Warren:具体来说,Indy的IdCoderMIME单元包含支持base64的类. (2认同)

Rod*_*ima 9

在古老的Delphi版本中,您可以使用synapse(链接在这里)

只需synacode.pas输入你的用途e调用EncodeBase64/EncodeBase64.

干杯