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

时间:2011-10-31 16:24:49

标签: string delphi file binary base64

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

使用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

由于

P.S。

我已经四处寻找并找到了可能的解决方案 Saving a Base64 string to disk as a binary using Delphi 2007但还有另一种方式吗?

1 个答案:

答案 0 :(得分: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;

注意:我只是在脑海里编译了这个。