二进制到 Base64 (Delphi)

发布于 2024-11-03 22:03:36 字数 217 浏览 0 评论 0原文

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

编辑

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

  • 打开一个exe文件
  • 将其内容转换为base64

How can I get content of an exe file and convert it into Base64 encoding ?

Edit

I use D2010 and I want to know how is it possible exactly ?

  • open an exe file
  • convert its content into base64

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

幸福%小乖 2024-11-10 22:03:36

在 Delphi 2009/2010/XE 中,有一个单元 EncdDecd.pas(Delphi XE2 为 Soap.EncdDecd.pas),包含函数 EncodeBase64 和 <代码>解码Base64。您可以将 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;

In Delphi 2009/2010/XE there is unit EncdDecd.pas (Soap.EncdDecd.pas for Delphi XE2) containing the functions EncodeBase64 and DecodeBase64. You can load the exe file into a memorystream and then call 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;
掌心的温暖 2024-11-10 22:03:36

在古老的 Delphi 版本中,您可以使用 synapse链接此处)

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

干杯

In ancient Delphi versions, you can use synapse (link here)

Just put synacode.pas in your uses e call EncodeBase64/EncodeBase64.

Cheers

终陌 2024-11-10 22:03:36

正如评论中提到的,从 Delphi XE8 开始,您可以使用 System.NetEncoding.TNetEncoding.Base64 类属性。
它还返回一个 string 而不是 AnsiString

function TryEncodeFile(const AFileName: string; out ABase64string: string): Boolean;
var
  MemStream: TMemoryStream;
begin
  MemStream := TMemoryStream.Create;
  try
    MemStream.LoadFromFile(AFileName);
    ABase64string :=
      TNetEncoding.Base64.EncodeBytesToString(MemStream.Memory, MemStream.Size);
    Result := True;
  finally
    MemStream.Free;
  end;
end;

As also mentioned in the comments, since Delphi XE8 you can use the System.NetEncoding.TNetEncoding.Base64 class property.
It also returns a string instead of an AnsiString:

function TryEncodeFile(const AFileName: string; out ABase64string: string): Boolean;
var
  MemStream: TMemoryStream;
begin
  MemStream := TMemoryStream.Create;
  try
    MemStream.LoadFromFile(AFileName);
    ABase64string :=
      TNetEncoding.Base64.EncodeBytesToString(MemStream.Memory, MemStream.Size);
    Result := True;
  finally
    MemStream.Free;
  end;
end;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文