我一直试图将一些十六进制元素转换为32位数字。我正在使用altera硬件板进行编程,因此一些定义名称略有不同,但当然代表相同的内存大小。
以下是我希望从代码开始实现的基本示例。
//student[@rollno='393']/marks
我希望更改alt_u32 x,以便它保存alt_u8 y的每个元素。所以结果看起来像这样:
alt_u32 x = 0xC0C0C0C0;
alt_u8 y = {0xF8, 0xA0, 0xC0, 0x01};
我明白我可以用面具或者memcpy做到这一点? 但是我无法用代码解释它。
欢呼阅读。
答案 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
;