Moin,
das beschriebene Verhalten ist vollkommen korrekt: Du nimmst einen uint32_t
des Wertebereichs $$[0,2^{32}-1]$$ und castest ihn in einen uint8_t
des Wertebereichs $$[0,2^{8}-1]$$, das heißt, dass die obersten drei Bytes „weggeworfen“ werden und nur mit dem niedrigsten Byte weitergearbeitet wird, also dessen Inhalt.
Viele Grüße
Robert