C 函数将 4 个字节转换为字符数组中的整数

问题描述 投票:0回答:0

我面临着一个困境。

我有一个大小为 2034 字节的无符号字符数组,现在我希望在这个数组中存储大小为 4 字节的整数

含义 2^32 位

现在我明白了,如果我想存储值 100000

我需要将我的字节分布在 4 个位置。

这就是我目前所拥有的

void store_int(char* arr, int index, int value) {
    arr[index] = (value >> 24) & 0xFF;
    arr[index+1] = (value >> 16) & 0xFF;
    arr[index+2] = (value >> 8) & 0xFF;
    arr[index+3] = value & 0xFF;
}

同样,我也做了一个函数,它接受一个索引,并访问分布在数组中的 4 个字节,以返回一个带符号的整数

在这里

int read_int(const unsigned char* arr, int index) {
    int value = 0;
    value |= ((int)arr[index]) << 24;
    value |= ((int)arr[index+1]) << 16;
    value |= ((int)arr[index+2]) << 8;
    value |= ((int)arr[index+3]);
    return value;
}

现在卡在这个阶段了

我想创建一个接受索引的函数,并返回保留符号的前 8 位并将其作为整数返回,我将如何去做这件事

比如我的整数是500500,它存储在一个char数组中,跨4个索引位置,

例如 500500 在二进制中是:00000000000001111010001100010100

我希望获得第一个字节或 8 位

哪个是00010100或者20,我也想保留符号,可以吗,如果有人能写一个函数,像这样

    int return_first_8_bits(unsigned char* array, int index){


     return 0;
     }

除此之外,在我的代码中,store_int 和 read_int 作为小端存储到我的 arr 中。

arrays c bit-manipulation bit
© www.soinside.com 2019 - 2024. All rights reserved.