在 Rust 中,我有一个压缩数组的函数:
fn create_bitvec(data: Box<[u8]>) -> [u8; 49152] {
let mut bit_vector = [0u8; 49152];
for (index, &value) in data.iter().enumerate() {
let byte_index = (index * 4) / 8;
let bit_index = (index * 4) % 8;
let value_mask = 0b00001111 << bit_index;
let shifted_value = (value << bit_index) & value_mask;
bit_vector[byte_index] &= !value_mask;
bit_vector[byte_index] |= shifted_value;
}
debug!("made it here. {:?}", bit_vector);
bit_vector
}
Run Code Online (Sandbox Code Playgroud)
(很抱歉,如果函数的实现不好,但这不是这里的具体问题)。
该函数的使用方式如下:
pub fn create(data: Box<[u8]>) -> Chunk {
assert_eq!(data.len(), FULL, "Data length doesn't …Run Code Online (Sandbox Code Playgroud)