1.) Über ein
record-
Delphi-Quelltext
2.) Durch ein normales
record oder
array und einem (unsafe) typecast
3.) Über
absolute deklarierte Variablen.
4.) Mit Shift (
shr) &
and Operationen
5.) Über
Pointers (siehe oben)
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| type TVariante1 = record case byte of 0: (I: Integer); 1: (B1,B2,B3,B4: Byte) end; TVariante2 = array[0..3] of Byte; var Variante1: TVariante1; Variante2: Integer; Variante3I: Integer; Variante3B: array[0..3] of Byte absolute Variante3I; Variante4: Integer; begin Variante1.I := 1234321; ShowMessage(Format('%d %d %d %d', [Variante1.B1, Variante1.B2, Variante1.B3, Variante1.B4])); Variante2 := 1234321; ShowMessage(Format('%d %d %d %d', [TVariante2(Variante2)[0], TVariante2(Variante2)[1], TVariante2(Variante2)[2], TVariante2(Variante2)[3]])); Variante3I := 1234321; ShowMessage(Format('%d %d %d %d', [Variante3B[0], Variante3B[1], Variante3B[2], Variante3B[3]])); Variante4 := 1234321; ShowMessage(Format('%d %d %d %d', [Variante4 and $FF, Variante4 shr 8 and $FF, Variante4 shr 16 and $FF, Variante4 shr 24 and $FF])); end; |
Was für dich am besten ist, hängt davon ab, wofür du es brauchst.
Praktisch ist eigentlich nur Variante 2, allenfalls Variante 4 (sicherer und unabhängig von der Endianess).