c – 将UINT32值转换为UINT8数组[4]

我的问题是,如何将UINT32值转换为UINT8数组[4](C/C++),最好以独立于字节顺序的方式?另外,你如何从UINT8数组[4]中重构UINT32值,以回到你开始的位置?

解决方法

你没有真正地说自己的意思是独立于字节顺序 – 不清楚,因为字节数组必须有一些字节顺序.也就是说,以下之一必须满足您的要求:

给定UINT32 v和UINT8 a [4]:

“主机”端

(使用机器的本机字节顺序):

UINT8 *vp = (UINT8 *)&v;
a[0] = vp[0];
a[1] = vp[1];
a[2] = vp[2];
a[3] = vp[3];

要么:

memcpy(a,&v,sizeof(v));

要么:

*(UINT32 *)a = v;

大端

(又名“网络订单”):

a[0] = v >> 24;
a[1] = v >> 16;
a[2] = v >>  8;
a[3] = v;

小端

a[0] = v;
a[1] = v >>  8;
a[2] = v >> 16;
a[3] = v >> 24;

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...