将数组元素连接成32位数字



我一直在尝试将一些十六进制元素转换为32位数字。我在altera硬件板上编程,所以一些定义名称有点不同,但当然代表相同的内存大小。

以下是我希望从代码开始实现的一个基本示例。

alt_u32 x = 0xC0C0C0C0;
alt_u8 y = {0xF8, 0xA0, 0xC0, 0x01};

我希望更改alt_u32x,使其包含alt_u8y的每个元素。因此结果如下:

x = 0xF8A0C001

我知道我可以戴着口罩或记忆袋来做这件事?但我无法用代码解释。

为阅读干杯。

y应声明为数组:

alt_u8 y[] = {0xF8, 0xA0, 0xC0, 0x01};

然后你可以使用比特操作:

x = (y[0] << 24) | (y[1] << 16) | (y[2] << 8) | y[3];

如果体系结构是big endian:,则memcpy也将工作

memcpy(&x, y, 4);

如果体系结构是little endian,则使用memcpy,结果将是0x01C0A0F8

最新更新