delphi Base64编码字符串到二进制文件

yqlxgs2m  于 2022-11-23  发布在  其他
关注(0)|答案(1)|浏览(219)

我有一个包含PDF数据的Base64编码字符串。使用EncdDecd单元,我可以将字符串解码为字节数组。
这就是我遇到麻烦的地方:我试着将字符保存到字符串中,但是一旦它遇到零值(ASCII = 0#0$00),字符串就不再追加。例如:

uses
  EncdDecd;
var
  EncodedString : String;
  Report : String;
  Base64Bytes: TBytes; // contains the binary data
begin
  Base64Bytes := DecodeBase64(EncodedString);
  for I := 0 to Length(Base64Bytes) - 1 do
    begin
      Report := Report + Chr(Base64Bytes[I]);
    end;

写入文本文件似乎效果更好,但将其重命名为.PDF后,文件无法正确打开。
如何在 Delphi 中写入二进制文件?或者将数据保存到流中?基本上我只是尝试将编码后的字符串保存到PDF/二进制文件中,或者在Delphi中显示PDF
我已经四处寻找了相当多,并在Saving a Base64 string to disk as a binary using Delphi 2007中找到了一个可能的解决方案,但是否有其他方法?

z9ju0rcb

z9ju0rcb1#

这应该可以做到:

procedure DecodeBaseToFile(const FileName: string; 
  const EncodedString: AnsiString);
var
  bytes: TBytes;
  Stream: TFileStream;
begin
  bytes := DecodeBase64(EncodedString);
  Stream := TFileStream.Create(FileName, fmCreate);
  try
    if bytes<>nil then
      Stream.WriteBuffer(bytes[0], Length(bytes));
  finally
    Stream.Free;
  end;
end;

:我只是在脑子里编了这个。

相关问题