uint64_t read_bits_from_array(uint8_t* array, int start_bit, int num_bits) {
// 计算起始字节和偏移量
int start_byte = start_bit / 8;
int bit_offset = start_bit % 8;
// 读取数据
uint64_t result = 0;
for (int i = 0; i < num_bits; i++) {
result |= ((array[start_byte] >> (7 - bit_offset)) & 1) << (num_bits - 1 - i);
bit_offset++;
if (bit_offset == 8) {
bit_offset = 0;
start_byte++;
}
}
return result;
}