Nimm lieber sowas:
Code:
output = (input >> (byte * 8)) & 0xFF;
input: 32-Bit Eingabewert
output: 8-Bit Ausgabewert
byte: Index des Bytes (0 .. 3)

Am besten Funktioniert das ganze wenn "byte" eine Konstante ist, dann pickt sich der GCC einfach das passende Byte aus dem (u)int32_t raus.

mfG
Markus

PS: Type-Punning mit Unions sollte man vermeiden