将数组元素连接成32位数

时间:2015-11-22 13:08:07

标签: c

我一直试图将一些十六进制元素转换为32位数字。我正在使用altera硬件板进行编程,因此一些定义名称略有不同,但当然代表相同的内存大小。

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

//student[@rollno='393']/marks

我希望更改alt_u32 x,以便它保存alt_u8 y的每个元素。所以结果看起来像这样:

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

我明白我可以用面具或者memcpy做到这一点? 但是我无法用代码解释它。

欢呼阅读。

1 个答案:

答案 0 :(得分:2)

y应声明为数组:

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

然后你可以使用按位运算:

x = (y[0] << 24) | (y[1] << 16) | (y[2] << 8) | y[3];
如果体系结构为memcpy

big endian也会起作用

memcpy(&x, y, 4);

如果架构为little endian,则使用memcpy,结果将为0x01C0A0F8;