How about this:
struct NewType{
char z;
char a;
char b;
char c;
};
union NewUnion{
NewType n_T;
unsigned long l;
};
void setup ()
{
Serial.begin(115200);
}
void loop ()
{
byte a = 0x0F;
byte b = 0x0E;
byte c = 0x0C;
byte d = 0x0D;
byte e = 0x0A;
NewUnion aa = {{ ( d << 4 ) | e, ( b << 4 ) | c, a, 0 }};
Serial.println (aa.l, HEX);
}
2,166 bytes now compared to previous 2,260 bytes
Bad choice of names, I know, just rushing
EDIT: added extra {} to drop warning.