Delphi - Byte的数组[0..693] - 到B64编码的字符串

时间:2012-09-01 06:37:12

标签: delphi bytearray base64 delphi-xe2

我的代码中有一个声明的变量,如下所示:

Var
   VarName:Array[0..693] of Byte = ( and my array here );

我的用途中有EncdDecd ..

我希望使用EncdDecd.pas中的EncodeBase64函数将此Byte数组编码为base64字符串

但是我不确定如何将它返回到漂亮而漂亮的b64字符串中,该字符串可以使用DecodeBase64直接转换回字节数组...

我尝试过几种不同的方法..

Var Res:PWideChar;
begin
    StringToWideChar(EncodeBase64(@VarName, 693), Res, 693);
    ClipBoard.SetTextBuf(Res);
end;

使用该代码访问违规行为......

也尝试过:

begin
    ClipBoard.SetTextBuf(PWideChar(EncodeBase64(@VarName, 693)));
end;

返回一个充满扭曲的中文符号的字符串......

任何有关返回此字符串的帮助都将非常感谢..

谢谢!

1 个答案:

答案 0 :(得分:7)

函数声明为

function  DecodeBase64(const Input: AnsiString): TBytes;
function  EncodeBase64(const Input: Pointer; Size: Integer): AnsiString;

所以你需要在Unicode Delphi中将AnsiString强制转换为字符串,

var S: string;

begin
  S:= string(EncodeBase64(@VarName, 693));
  ..

解码S你应该把它强制转换为AnsiString:

var B: TBytes;

begin
  B:= DecodeBase64(AnsiString(S));
  ..