从[u8; 16]并转换为u32

时间:2020-09-26 19:06:40

标签: rust

所以我想做的是屏蔽字节数组中的前3位,并从这些位返回u32。

我是Rust的初学者,这是我的工作并且可以正常工作,但是我觉得必须有一种更优雅的方式。

fn bits_to_u32(input: &[u8; 16]) -> u32 {

    let mask: u8 = 0b0000_0111;
    let masked_out_value: u8 = &input[0].clone() & mask;
    let value = u32::from_le_bytes([masked_out_value, 0, 0, 0]);

    value
}

有人建议如何使它更优雅吗?

1 个答案:

答案 0 :(得分:2)

您应该可以将其简化为:

const LOW_3_BITS_MASK: u8 = 0b0000_0111;

fn bits_to_u32(input: &[u8; 16]) -> u32 {
    u32::from(input[0] & LOW_3_BITS_MASK)
}