64个基本编码字符串到二进制文件

Tre*_*vor 3 delphi string binary base64 file

我有一个64基本编码的字符串,其中包含PDF文件数据.

使用EncdDecd命名空间我可以将字符串解码为字节数组.

这是我遇到麻烦的地方,我尝试将字符保存到字符串但是一旦它达到空值(ascii = 0),字符串就不再附加..

示例
var
EncodedString:String;
报告:字符串;
Base64Bytes:TBytes; //包含二进制数据

begin
Base64Bytes := DecodeBase64(EncodedString);
for I := 0 to Length(Base64Bytes) - 1 do
    begin
        Report := Report + Chr(Base64Bytes[I]);
    end;
end;

写入文本文件似乎更好,但在将其重命名为pdf后,它无法正确打开.

如何在delphi中写入二进制文件?甚至将数据保存到流中?

基本上我只是尝试获取编码的字符串并将其保存为pdf文件,或在delphi中显示pdf.

谢谢

PS

我已经看了很多,并找到了一个可能的解决方案 使用Delphi 2007将Base64字符串保存为磁盘作为二进制文件,但还有另一种方法吗?

Dav*_*nan 8

这应该这样做:

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;
Run Code Online (Sandbox Code Playgroud)

注意:我只是在脑海中编译了这个.