3

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

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

我的用途中有 EncdDecd..

我希望使用 EncdDecd.pas 中的 EncodeBase64 函数将此字节数组编码为 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;

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

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

谢谢!

4

1 回答 1

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));
  ..
于 2012-09-01T07:41:15.740 回答