Einzelnen Beitrag anzeigen

gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#6

AW: Big Endian Little Endian tauschen von smallint Wert und von normalem integer Wert

  Alt 21. Jun 2010, 10:20
Delphi-Quellcode:
t1 := wert DIV 65536;
t2 := wert MOD 65536;
nwert := t2 * 65536 + t1;
Bei einem vorzeichenbehafteten Typen solltest du aufpassen und besser keine mathematischen Operatioen verwenden oder diesen erstmal in einen Vorzeichenlosen casten.
Und das ist noch das kleinere Problem! Hier werden nur die beiden 16-Bit-Teile getauscht, aber das ist keine Big <-> Little-Endian-Umwandlung, liefert zB für $23456789 den angeblichen Wert $67892345 statt $89674523. Mit purem Pascal hier eine korrekte Umwandlung:
Delphi-Quellcode:
function RB(A: longint): longint;
  {-Umwandlung Big - Little Endian}
begin
  RB := ((A and $FF) shl 24) or ((A and $FF00) shl 8) or ((A and $FF0000) shr 8) or ((A and longint($FF000000)) shr 24);
end;
  Mit Zitat antworten Zitat