Dar*_*ski 1 delphi base64 serialization freepascal lazarus
你能告诉我怎么办?是否有任何Freepascal单位可以为我做这个?我需要这样,所以我的程序可以将二进制数据存储在基于XML的文件格式中.
使用base64单位及其两个类,TBase64EncodingStream和TBase64DecodingStream.
这是一个简单的例子:
program demo;
uses Classes, base64;
var
DecodedStream: TStringStream;
EncodedStream: TStringStream;
Encoder: TBase64EncodingStream;
Output: string;
begin
DecodedStream := TStringStream.Create('Hello World!');
EncodedStream := TStringStream.Create('');
Encoder := TBase64EncodingStream.Create(EncodedStream);
Encoder.CopyFrom(DecodedStream, DecodedStream.Size);
Output := EncodedStream.DataString;
{ Outputs 'SGVsbG8gV29ybGQh' }
WriteLn(Output);
DecodedStream.Free;
EncodedStream.Free;
Encoder.Free;
end.
Run Code Online (Sandbox Code Playgroud)
并且,在相反的方向:
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.
Run Code Online (Sandbox Code Playgroud)
或者shorthands encodestringbase64和decodestringbase64(2.4.4+)用于非基于流的用法:
Uses Base64;
var
s : AnsiString;
Begin
s:=EncodeStringBase64('Hello world!');
Writeln('Encoded : ',s);
s:=DecodeStringBase64(s);
Writeln('Decoded again : ',s);
end.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5513 次 |
| 最近记录: |