Einzelnen Beitrag anzeigen

Cyf

Registriert seit: 30. Mai 2008
407 Beiträge
 
Lazarus
 
#1

Endian (Byte-Order) vertauschen

  Alt 11. Dez 2008, 00:05
Prozeduren um von Little-Endian zu Big-Endian und umgekehrt zu konvertieren:

Delphi-Quellcode:
function ChangeEndian16(X: WORD): WORD; register; //oder auch Swap
asm
  xchg AL, AH
end;

function ChangeEndian32(X: DWORD): DWORD; register;
asm
  bswap EAX //konvertiert Endian
end;

procedure ChangeEndian64(P: Pointer); register;
asm
  mov EDX, [EAX]
  bswap EDX
  mov EBX, [EAX + $04]
  bswap EBX
  mov [EAX], EBX
  mov [EAX + $04], EDX
end;
  Mit Zitat antworten Zitat