rust - 从[u8; 16]并转换为u32

标签 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
}
有什么建议可以使它更优雅吗?

最佳答案

您应该可以将其简化为:

const LOW_3_BITS_MASK: u8 = 0b0000_0111;

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

关于rust - 从[u8; 16]并转换为u32,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64081534/

相关文章:

performance - 如何根据条件重复向量中的某些元素?

rust - 如何使用不同结构体的方法?

closures - 闭包的类型别名

image - 使用 Piston 的 image crate 编译程序很慢

rust - 将二维固定大小的数组转换为切片

rust - 结构内部的模式匹配

rust - 访问枚举变量字段的正确方法,该字段本身就是结构的字段

asynchronous - 如何实现对异步fn进行轮询的Future或Stream?

windows - 创建窗口时 ntdll.dll 中的 SIGSEGV

winapi - 使用rust Win32 FFI : User-mode data execution prevention (DEP) violation