<分区>
并将数字转换为字节数组?
我想避免使用transmute
,但最重要的是要达到最佳性能。
<分区>
并将数字转换为字节数组?
我想避免使用transmute
,但最重要的是要达到最佳性能。
最佳答案
u32
是 4 个字节,您可以使用std::mem::transmute
来解释[ u8; 4]
作为 u32
但是:
无依赖性解决方案就是简单地执行数学运算,遵循 Rob Pike's steps :
fn as_u32_be(array: &[u8; 4]) -> u32 {
((array[0] as u32) << 24) +
((array[1] as u32) << 16) +
((array[2] as u32) << 8) +
((array[3] as u32) << 0)
}
fn as_u32_le(array: &[u8; 4]) -> u32 {
((array[0] as u32) << 0) +
((array[1] as u32) << 8) +
((array[2] as u32) << 16) +
((array[3] as u32) << 24)
}
它编译成相当高效的代码。
如果依赖项是一个选项,则使用 byteorder crate 更简单。
关于numbers - Rust 有办法将几个字节转换为数字吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36669427/