sys.base64.pas

sys.base64.pas

复制代码
unit sys.base64;
//cxg 2025-1-9 fit(delphi+fpc)
interface

uses
  {$ifndef fpc}
  System.NetEncoding,
  {$else}
  base64,
  {$endif}
  SysUtils, Classes;

function base64Encode(const val: string): string; overload;
function base64Encode(const val: TBytes): TBytes; overload;
procedure base64Encode(const input, output: TStream); overload;

function base64Decode(const val: string): string; overload;
function base64Decode(const val: TBytes): TBytes; overload;
procedure base64Decode(input, output: TStream); overload;

implementation

procedure base64Decode(input, output: TStream);
{$ifdef fpc}
var b64Stream: TBase64DecodingStream;
  outStream: TStringStream;
{$endif}
begin
  {$ifndef fpc}
  TNetEncoding.Base64.Decode(input, output);
  {$else}
  outStream := TStringStream.Create('');
  b64Stream := TBase64DecodingStream.Create(outStream);
  try
    b64Stream.CopyFrom(input, input.Size);
  finally
    b64Stream.Free;
  end;
  {$endif}
end;

function base64Decode(const val: TBytes): TBytes;
{$ifdef fpc}
var b64Stream: TBase64DecodingStream;
  outStream: TStringStream;
{$endif}
begin
  {$ifndef fpc}
  Result := TNetEncoding.Base64.Decode(val);
  {$else}
  outStream := TStringStream.Create('');
  b64Stream := TBase64DecodingStream.Create(outStream);
  try
    b64Stream.Write(PByte(val)^, length(val));
    setlength(result, outStream.Size);
    outStream.Read(PByte(result)^, outStream.Size);
  finally
    outStream.Free;
    b64Stream.Free;
  end;
  {$endif}
end;

function base64Decode(const val: string): string;
begin
  {$ifndef fpc}
  Result := TNetEncoding.Base64.Decode(val);
  {$else}
  result := DecodeStringBase64(val);
  {$endif}
end;

function base64Encode(const val: TBytes): TBytes;
  {$ifdef fpc}
var b64Stream: TBase64EncodingStream;
  outStream: TStringStream;
  {$endif}
begin
  {$ifndef fpc}
  Result := TNetEncoding.Base64.Encode(val);
  {$else}
  outStream := TStringStream.Create('');
  b64Stream := TBase64EncodingStream.Create(outStream);
  try
    b64Stream.Write(PByte(val)^, length(val));
    setlength(result, outStream.Size);
    outStream.Read(PByte(result)^, outStream.Size);
  finally
    outStream.Free;
    b64Stream.Free;
  end;
  {$endif}
end;

procedure base64Encode(const input, output: TStream);
{$ifdef fpc}
var b64Stream: TBase64EncodingStream;
outStream: TStringStream;
{$endif}
begin
  {$ifndef fpc}
  TNetEncoding.Base64.Encode(input, output);
  {$else}
  outStream := TStringStream.Create('');
  b64Stream := TBase64EncodingStream.Create(outStream);
  try
    b64Stream.CopyFrom(input, input.Size);
  finally
    b64Stream.Free;
  end;
  {$endif}
end;

function base64Encode(const val: string): string;
begin
  {$ifndef fpc}
  Result := TNetEncoding.Base64.Encode(val);
  {$else}
  result := EncodeStringBase64(val);
  {$endif}
end;

end.
复制代码

 

posted @   delphi中间件  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2023-01-09 mormot2ORM
2023-01-09 mormot118ORM
2017-01-09 FIREDAC TFDCONNECTION连接MYSQL数据库
点击右上角即可分享
微信分享提示