我在一个包含十六进制值的char数组中获取了10个字节的数据 Data1 [0] = 0x00,Data1 [1] = 0x00,Data1 [0] = 0x9 Data1 [2] = 0x01,依此类推... 现在,我想将此不同的数组字节放入单个long变量中。喜欢
Long_var = 091 ... 如何接受任何方法都可以。
对不起,我忘了提一下,我想用8051代码来做
答案 0 :(得分:2)
在C语言中,通常有两种方法type punning都涉及数组。
第一个方法是使用32位整数的普通数组,然后将字节复制到该数组中:
char data[12];
// data is initialized...
uint32_t integers[3];
memcpy(integers, data, 12);
printf("First value is 0x%08x\n", integers[0]);
另一种方法是使用联合:
union type_punning_union
{
uint32_t integers[3];
char data[12];
};
union type_punning_union u;
// Initialize u.data...
printf("First value is 0x%08x\n", u.integers[0]);
重要注意事项1:您的字节数组大小不匹配,无法将所有数据均匀地匹配到32位整数。
重要注意事项2:上面显示的代码与endianness无关,这意味着打印的结果可能与您期望的结果不完全相同。