相关uint32和uint8[4]之间的相互转换

有关uint32和uint8[4]之间的相互转换
我现在想把这两种数据类型用C++进行相互转化,网上提到了用位移操作,看起来觉得挺麻烦的,为什么不能直接用memcpy呢?用位移操作的话,又有什么好处呢?
#define HEX_BYTE_LEN 4
uint32 input = 100;
uint8_t val[HEX_BYTE_LEN];

memcpy(val, &input, HEX_BYTE_LEN*sizeof(UInt8));
memcpy(&input, val, sizeof(uint32));
------解决思路----------------------
小尾码的缘故。
------解决思路----------------------
大小端的原因,memcpy可能会有移植问题。在大端机器和小端机器上结果不一样。