我的问题是如何以独立于字节序的方式将 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++ - 将 UINT32 值转换为 UINT8 数组[4],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6499183/