You haven't really said what you mean by independent of endianness - it's unclear since the byte array must have some endianness. That said, one of the below must answer your requirements:
Given UINT32 v
and UINT8 a[4]
:
"Host" endian
(use the machine's native byte order):
UINT8 *vp = (UINT8 *)&v;
a[0] = vp[0];
a[1] = vp[1];
a[2] = vp[2];
a[3] = vp[3];
or:
memcpy(a, &v, sizeof(v));
or:
*(UINT32 *)a = v;
Big endian
(aka "network order"):
a[0] = v >> 24;
a[1] = v >> 16;
a[2] = v >> 8;
a[3] = v;
Little endian
a[0] = v;
a[1] = v >> 8;
a[2] = v >> 16;
a[3] = v >> 24;
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…