String 将64个基编码字符串转换为二进制文件
我有一个包含PDF文件数据的64位编码字符串 使用EncdDecd名称空间,我可以将字符串解码为字节数组 这就是我遇到的问题,我尝试将字符保存到字符串中,但一旦它遇到空值(ascii=0),字符串就不再追加 示例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
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编码器,我需要更改,因为我没有找到正确的用法。