如何将任何类型的文件编码为 base64 字符串,然后使用 Lazarus/Delphi 再次将其解码为文件? [英] How to encode file of any type into base64 string and then decode it into file again using Lazarus/Delphi?

查看:27
本文介绍了如何将任何类型的文件编码为 base64 字符串,然后使用 Lazarus/Delphi 再次将其解码为文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你能告诉我该怎么做吗?是否有任何 Freepascal 单元可以为我做到这一点?我需要它,这样我的程序才能以基于 XML 的文件格式存储二进制数据.

Can you tell me how can I do that? Is there any Freepascal unit that can do this for me? I need that so my program can store binary data in it's XML-based fileformat.

推荐答案

使用base64 单元及其两个类,TBase64EncodingStreamTBase64DecodingStream.

这是一个简单示例:

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.

而且,在相反的方向:

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.

或简写 encodestringbase64decodestringbase64 (2.4.4+) 用于非基于流的使用:

or the shorthands encodestringbase64 and decodestringbase64 (2.4.4+) for non stream based usage:

Uses Base64;
var 
   s : AnsiString;
Begin
  s:=EncodeStringBase64('Hello world!');
  Writeln('Encoded : ',s);
  s:=DecodeStringBase64(s);
  Writeln('Decoded again : ',s);    
end.

这篇关于如何将任何类型的文件编码为 base64 字符串,然后使用 Lazarus/Delphi 再次将其解码为文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆