Byte Swap sur entier 16, 32 et 64 bits

Contenu du snippet

{ BSwap sur entier 16bits }
function BSwap(const a : word) : word;
asm
  XCHG AL, AH;
end;

{ BSwap sur entier 32 bits }
function BSwap(const a : longword) : longword;
asm
  BSWAP EAX;
end;

{ BSwap sur entier 64 bits }
function BSwap(const a : int64) : int64;
asm
  MOV EDX,[EBP+$08];
  MOV EAX,[EBP+$0C];
  BSWAP EAX;
  BSWAP EDX;
end;

{ BSwap sur n'importe quoi }
procedure BSwap(const InBuffer; var OutBuffer; const BufferLen: integer);
var pI, pO : ^byte;
    N : integer;
begin
  pI := @InBuffer;
  pO := @OutBuffer;
  inc(pO, BufferLen-1);
  for N := 0 to BufferLen-1 do
  begin
    pO^ := pI^;
    inc(pI);
    dec(pO);
  end;
end;


Compatibilité : Assembleur x86, Delphi 5

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.