如何将 AnsiString 转换为 TBytes,反之亦然?

How to convert AnsiString to TBytes and vice versa?

我有一个 AnsiString,我需要以最有效的方式将其转换为 TBytes。我该怎么做?

假设您想保留相同的编码,您可以这样做

SetLength(bytes, Length(ansiStr));
Move(Pointer(ansiStr)^, Pointer(bytes)^, Length(ansiStr));

反过来

SetLength(ansiStr, Length(bytes));
Move(Pointer(bytes)^, Pointer(ansiStr)^, Length(bytes));

函数 BytesOf 将 AnsiString 转换为 TBytes。

var
  A: AnsiString;
  B: TBytes;
begin
  A := 'Test';
  B := BytesOf(A);

  // convert it back
  SetString(A, PAnsiChar(B), Length(B));
end;