gpt4 book ai didi

c - 如何在 C 中将 int8_t 数组转换为 int32_t 数组

转载 作者:太空宇宙 更新时间:2023-11-04 04:11:37 26 4
gpt4 key购买 nike

我有一个数组,我想将它转换为一个 int32_t 数组。

我尝试了下面的代码。

int32_t const_data[11];
int8_t buffer[44];

int k = 0;
while (k < 11) {
for (int j = 0; j < 44; j++) {
const_data[k] = bf.buffer[j];
k++;
}
}

最佳答案

最简单直接的方法是使用union

#define array_size_int32    11
#define array_size_int8 44

typedef union{
int32_t const_data[array_size_int32];
int8_t buffer[array_size_int8];
}my_union_t;

示例用法:

/* initialize union members */
my_union_t my_union = {
.const_data = {
0x12345678,
0x12345678,
0x12345678,
0x12345678,
0x12345678,
0x12345678,
0x12345678,
0x12345678,
0x12345678,
0x12345678,
0x12345678,
},
};

打印方式示例:

uint8_t i;

for(i = 0; i < array_size_int8; i++){

/* mask off sign extension bits */
printf("my_union.buffer[%d] = %x\n", i, my_union.buffer[i] & 0xff);

}

你可以试试here的代码

编辑:

我应该补充一点,这是可行的,因为分配任一数组所需的内存大小是相同的,如果您更改 #define 而没有考虑到这一点,您将会遇到问题.

例如,

#define array_size_int32    10    //40 bytes
#define array_size_int8 45 //45 bytes

关于c - 如何在 C 中将 int8_t 数组转换为 int32_t 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56672000/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com