我面临着一个困境。
我有一个大小为 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 中。