Delphi字节的反向顺序

The*_*oon 3 delphi reverse byte pointers

我一直在尝试编写一个带有两个指针(输入和输出)的函数,并以相反的顺序将输入中的字节写入输出.到目前为止,我还没能使它正常工作.

procedure ReverseBytes(Source, Dest: Pointer; Size: Integer);
var
  Index: Integer;
begin
  Move(Pointer(LongInt(Source) + Index)^, Pointer(LongInt(Dest) + (Size - Index))^ , 1);   
end;
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议一个更好的方法来做到这一点.

谢谢.

LU *_* RD 7

procedure ReverseBytes(Source, Dest: Pointer; Size: Integer);
begin
  Dest := PByte( NativeUInt(Dest) + Size - 1);
  while (Size > 0) do 
  begin
    PByte(Dest)^ := PByte(Source)^;
    Inc(PByte(Source));
    Dec(PByte(Dest));
    Dec(Size);
  end;
end;
Run Code Online (Sandbox Code Playgroud)

  • +1清晰,快速,高效.另一个更快的模式可能是将字节反转两个(从两端)到中间.但比其他实施要好得多. (2认同)