Ich würde mal sagen : so wie es dem Programmierer des Compilers in den
Kram gepasst hat.
Wenn Du nicht nach Jahren/Jahrzehnten mit irgendwelchen ollen Kamellen,
die Du mal programmiert hast, belästigt werden willst, vertraue
niemals darauf, wie der Compiler Deine Daten im Speicher ablegt.
Ob Du es glaubst oder nicht, sowas kann sich auch von einer
Versionsnummer zur anderen eines Compilers ändern.
Unions, Typecasts (gerne auch mal von Zeigern) oder memcpy/memmove
machen zwar auf den ersten Blick einen schlanken Fuß, schränken aber die
Portierbarkeit heftigst ein.
Wenn man Daten serialisiert, um sie in's Nvm abzulegen, ist es sehr
wahrscheinlich, dass haargenau der selbe Mikrokontroller mit der selben
Software die auch wieder liest und deserialisiert. Wenn man dann noch
sagt, beim Softwareupdate werden die Nvm-Daten wieder zurück gesetzt,
weil sich das Layout vermutlich sowieso ändert, dann kann man schon mal
mit solchen Tricks arbeiten.
Wie so oft muss man also wissen, was man tut...