String 将64个基编码字符串转换为二进制文件

String 将64个基编码字符串转换为二进制文件,string,delphi,file,binary,base64,String,Delphi,File,Binary,Base64,我有一个包含PDF文件数据的64位编码字符串 使用EncdDecd名称空间,我可以将字符串解码为字节数组 这就是我遇到的问题,我尝试将字符保存到字符串中,但一旦它遇到空值(ascii=0),字符串就不再追加 示例 var 编码字符串:字符串 报告:字符串 base64字节:TBytes;//包含二进制数据 begin Base64Bytes := DecodeBase64(EncodedString); for I := 0 to Length(Base64Bytes) - 1 do b

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

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

这就是我遇到的问题,我尝试将字符保存到字符串中,但一旦它遇到空值(ascii=0),字符串就不再追加

示例
var
编码字符串:字符串
报告:字符串
base64字节:TBytes;//包含二进制数据

begin Base64Bytes := DecodeBase64(EncodedString); for I := 0 to Length(Base64Bytes) - 1 do begin Report := Report + Chr(Base64Bytes[I]); end; end; 开始 base64字节:=DecodeBase64(EncodedString); 对于I:=0到长度(base64字节)-1 do 开始 报告:=报告+Chr(base64字节[I]); 结束; 结束; 写入文本文件似乎效果更好,但将其重命名为pdf后无法正确打开

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

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

谢谢

p、 美国

我环顾四周,找到了一个可能的解决办法 但还有别的办法吗

这应该可以做到:

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;
过程DecodeBaseToFile(常量文件名:字符串;
常量编码字符串:AnsiString);
变量
字节:TBytes;
流:TFileStream;
开始
字节:=DecodeBase64(EncodedString);
Stream:=TFileStream.Create(文件名,fmCreate);
尝试
如果bytesnil那么
WriteBuffer(字节[0],长度(字节));
最后
免费;
结束;
结束;

注意:我只是在脑子里整理了一下。

重复的。我看不出你在这里要求什么新信息。如果你只是想要更多的选项,它们属于原始问题的答案,而不是重复的答案。你尝试过什么?出了什么问题?如何“附加”字符串?请使用“EncdDecd名称空间”发布代码。另外,如何将文本文件更改为pdf?再次发布你的代码。Delphi中有很多方法可以转换字符串并将其保存为二进制。您发布的链接是一个非常紧凑的代码。@Trevor:您也可以使用
TByteStream
来代替。它是
TMemoryStream
的后代,因此它有一个
SaveToFile()
方法可用。这样,您就不必手动实例化
TFileStream
。@Trevor:为您投票,但您必须自己接受它作为答案(在向上/向下投票箭头下方打勾)。我创建了一个空单元,使用需要使用System.Classes、System.SysUtils、synacode、IdCoder、IdCoderMIME;我需要将Decodebase64行更改为bytes:=tiddecderime.DecodeBytes(EncodedString)@MárcioRossato使用不同的base64编码器,我需要更改,因为我没有找到正确的用法。