union, guck ich mir mal an. Spart man durch SRAM ein?
Nein, sparen tust du nichts. Dein Programm wird nur klarer verständlich.
union {unsigned long l; byte b[4]} data;
data.b[0] = 0x88 ; // 0 .. 7
data.b[1] = 0xAA; // 8.. 15
data.b[2] = 0x01; // 16 .. 23
data.b[3] = 0;
Serial.println (data.l, HEX); // liefert 1AA88
Du brauchst keinen temporären Zeiger zum casten wie bei
byte b[4] = {0x88, 0xAA, 0x01, 0};
unsigned long *lp = (unsigned long*) b; // Eine zusätzliche Variable, wird evtl aber auch wegoptimiert.
Serial.println (*lp, HEX); // liefert 1AA88
casts sind immer ein klein bisschen gemogelt, weil du dem Compiler das Überprüfen auf Korrektheit vermasselst.
Aber in beiden Fällen vermeidest du die fehleranfällige Rechnerei mit int.
Die passende Datenstruktur zu verwenden ist immer besser als Bitschiebereien, wenn man's vermeiden kann.