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

Jos*_*ine 3 delphi base64 bytearray delphi-xe2

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

Var
   VarName:Array[0..693] of Byte = ( and my array here );
Run Code Online (Sandbox Code Playgroud)

我的用途中有EncdDecd ..

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

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

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

Var Res:PWideChar;
begin
    StringToWideChar(EncodeBase64(@VarName, 693), Res, 693);
    ClipBoard.SetTextBuf(Res);
end;
Run Code Online (Sandbox Code Playgroud)

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

还尝试过:

begin
    ClipBoard.SetTextBuf(PWideChar(EncodeBase64(@VarName, 693)));
end;
Run Code Online (Sandbox Code Playgroud)

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

任何有关返回此字符串的帮助将不胜感激..

谢谢!

klu*_*udg 7

这些函数声明为

function  DecodeBase64(const Input: AnsiString): TBytes;
function  EncodeBase64(const Input: Pointer; Size: Integer): AnsiString;
Run Code Online (Sandbox Code Playgroud)

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

var S: string;

begin
  S:= string(EncodeBase64(@VarName, 693));
  ..
Run Code Online (Sandbox Code Playgroud)

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

var B: TBytes;

begin
  B:= DecodeBase64(AnsiString(S));
  ..
Run Code Online (Sandbox Code Playgroud)