在Delphi 2009中,将声明为TBytes的字节数组转换为RawByteString的最佳方法是什么?此代码实际上有效,也许有一种更快的方法(不使用循环):
function Convert(Bytes: TBytes): RawByteString;
var
I: Integer;
begin
SetLength(Result, Length(Bytes));
for I := 0 to ABytes - 1 do
Result[I + 1] := AnsiChar(Bytes[I]);
end;
SetLength()
会调用ReallocMem
来重新调整现有的 RawByteString,因此如果您在循环中调用此函数,则此版本可能会不必要地move()
先前的数据。使用SetString(Result, PAnsiChar(Bytes), length(Bytes))
可以更快速地完成操作。 - Arnaud Bouchez