如何将任何类型的文件编码为base64字符串,然后使用Lazarus/Delphi再次将其解码为文件?
你能告诉我怎么做吗?有没有任何Freepascal装置可以帮我做这件事?我需要它,以便我的程序能够以基于XML的文件格式存储二进制数据。使用该单元及其两个类,如何将任何类型的文件编码为base64字符串,然后使用Lazarus/Delphi再次将其解码为文件?,delphi,serialization,base64,freepascal,lazarus,Delphi,Serialization,Base64,Freepascal,Lazarus,你能告诉我怎么做吗?有没有任何Freepascal装置可以帮我做这件事?我需要它,以便我的程序能够以基于XML的文件格式存储二进制数据。使用该单元及其两个类,TBASE64编码流和TBASE64解码流 以下是一份: 在下列情况下: 或简写和(2.4.4+)对于非基于流的使用: Uses Base64; var s : AnsiString; Begin s:=EncodeStringBase64('Hello world!'); Writeln('Encoded : ',s);
TBASE64编码流
和TBASE64解码流
以下是一份:
在下列情况下:
或简写和(2.4.4+)对于非基于流的使用:
Uses Base64;
var
s : AnsiString;
Begin
s:=EncodeStringBase64('Hello world!');
Writeln('Encoded : ',s);
s:=DecodeStringBase64(s);
Writeln('Decoded again : ',s);
end.
“Uwe的复制品在FPC里有吗?”大卫,因为我没有拉扎勒斯,我不知道。这就是我写“可能”的原因。是的,它可以处理任何形式的流。这就是使它基于流的真正意义所在。顺便说一句,从2.4.4开始,该单元中还有两个简单的帮助函数,用于流包装,以便于使用。@marco谢谢。我认为如果你这么好的话,这是值得一个回答的。一个极好且清晰的回答!我试图自己找到这些信息,却偶然发现了这一点。感谢您也包括了非流方法,因为这是我需要使用的。
program demo;
uses Classes, base64;
var
DecodedStream: TStringStream;
EncodedStream: TStringStream;
Decoder: TBase64DecodingStream;
Output: string;
begin
EncodedStream := TStringStream.Create('SGVsbG8gV29ybGQh');
DecodedStream := TStringStream.Create('');
Decoder := TBase64DecodingStream.Create(EncodedStream);
DecodedStream.CopyFrom(Decoder, Decoder.Size);
Output := DecodedStream.DataString;
{ Outputs 'Hello World!' }
WriteLn(Output);
DecodedStream.Free;
EncodedStream.Free;
Decoder.Free;
end.
Uses Base64;
var
s : AnsiString;
Begin
s:=EncodeStringBase64('Hello world!');
Writeln('Encoded : ',s);
s:=DecodeStringBase64(s);
Writeln('Decoded again : ',s);
end.