Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Uwe Raabe,
22. Jul 2020
Das kommt auf die Erwartungshaltung an. Swap tauscht hat früher immer nur zwei Bytes getauscht und tut es auch jetzt noch. Bei vier Bytes ist es ja kein Swap mehr, sondern eine Umsortierung. Man muss das auch immer im Kontext des Hinweises betrachten, der in der Hilfe steht:
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Uwe Raabe,
22. Jul 2020
Swap kommt ja noch aus der 16-Bit Welt, wo Integer eben nur 16-Bit hatten.
Das 2. und 3. Byte bezeichnen in diesem Zusammenhang aber eben die Lo-Bytes. Swap vertauscht in dem Integer die beiden niedrigen Bytes, als wäre es ein Word. Insofern ist das Verhalten schon konsistent. Die Nummerierung der Bytes bezieht sich offenbar auf das verlinkte Beispiel.
var
X: Integer;
begin
X :=...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Uwe Raabe,
22. Jul 2020
Die Hilfe und auch das Beispiel sagen aber auch explizit, was damit passiert.
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Uwe Raabe,
22. Jul 2020
Nur falls das mal jemand brauchen könnte.
In System.Hash findet man auch THash.ToBigEndian für 32- und 64-Bit Variablen: System.Hash.THash.ToBigEndian
Für 16-Bit gibt es schon eine ganze Weile die procedure Swap: System.Swap