我有一个包含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但还有另一种方式吗?
答案 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;
注意:我只是在脑海里编译了这个。