将多个字节数组转换为单个long变量

时间:2018-09-13 07:06:28

标签: c 8051

我在一个包含十六进制值的char数组中获取了10个字节的数据 Data1 [0] = 0x00,Data1 [1] = 0x00,Data1 [0] = 0x9 Data1 [2] = 0x01,依此类推... 现在,我想将此不同的数组字节放入单个long变量中。喜欢

Long_var = 091 ... 如何接受任何方法都可以。

对不起,我忘了提一下,我想用8051代码来做

1 个答案:

答案 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无关,这意味着打印的结果可能与您期望的结果不完全相同。