// Bytes manipulations
#define LOW(U16) ((U8)U16)
#define HIGH(U16) ((U8)(U16 >> 8))
// Или например многобайтные с индейцами:
// U16/U32 endian handlers
#ifdef LITTLE_ENDIAN // => 16bit: (LSB,MSB), 32bit: (LSW,MSW) or (LSB0,LSB1,LSB2,LSB3) or (MSB3,MSB2,MSB1,MSB0)
#define MSB(u16) (((U8* )&u16)[1])
#define LSB(u16) (((U8* )&u16)[0])
#define MSW(u32) (((U16*)&u32)[1])
#define LSW(u32) (((U16*)&u32)[0])
#define MSB0(u32) (((U8* )&u32)[3])
#define MSB1(u32) (((U8* )&u32)[2])
#define MSB2(u32) (((U8* )&u32)[1])
#define MSB3(u32) (((U8* )&u32)[0])
#define LSB0(u32) MSB3(u32)
#define LSB1(u32) MSB2(u32)
#define LSB2(u32) MSB1(u32)
#define LSB3(u32) MSB0(u32)
#else // BIG_ENDIAN => 16bit: (MSB,LSB), 32bit: (MSW,LSW) or (LSB3,LSB2,LSB1,LSB0) or (MSB0,MSB1,MSB2,MSB3)
#define MSB(u16) (((U8* )&u16)[0])
#define LSB(u16) (((U8* )&u16)[1])
#define MSW(u32) (((U16*)&u32)[0])
#define LSW(u32) (((U16*)&u32)[1])
#define MSB0(u32) (((U8* )&u32)[0])
#define MSB1(u32) (((U8* )&u32)[1])
#define MSB2(u32) (((U8* )&u32)[2])
#define MSB3(u32) (((U8* )&u32)[3])
#define LSB0(u32) MSB3(u32)
#define LSB1(u32) MSB2(u32)
#define LSB2(u32) MSB1(u32)
#define LSB3(u32) MSB0(u32)
#endif