Ich benutze in solchen Fällen gerne variante Records:
Delphi-Quellcode:
TMyRec = packed record
case tag : byte of
0 : (b1 : Byte;
b2 : Byte;
b3 : Byte;
b4 : Byte);
1 : (MyInt : Integer);
end;
Mit deinem Beispiel müsste es dann so funktionieren:
Delphi-Quellcode:
var
vRec : TMyRec;
begin
vRec.MyInt := 0; // Initialisierung. Damit sind die b-Werte auch initialisiert
vRec.b1 := $10;
vRec.b2 := $5f;
end;
Bei der Reihenfolge der Byte-Werte weiß ich leider nicht mehr genau, wie das ganz korrekt sein muss. Ich meine, dass das Mixed Endian ist. Für das Beispiel ist es jedenfalls korrekt.
Das kannst du aber einfach prüfen, indem du Testwerte bei MyInt einträgst und nachsiehst, was bei den einzelnen Byte-Werten steht.
Einen Link, wie das in Delphi tatsächlich ist, habe ich auf die Schnelle leider nicht gefunden.