我一直在尝试将一些十六进制元素转换为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
;