3 bit-manipulation bit-shift logical-operators rust
我试图将 4 个字节组合成 u32,编译器告诉我移位已溢出。这是我的代码:
pub fn get_instruction(file: &[u8], counter: usize) {
let ins = u32::from(file[counter] << 24)
| u32::from(file[counter + 1] << 16)
| u32::from(file[counter + 2] << 8)
| u32::from(file[counter + 3]);
println!("{:x}", ins);
}
Run Code Online (Sandbox Code Playgroud)
您获得了运算符优先级并且转换错误:
pub fn get_instruction(file: &[u8], counter: usize) {
let ins = u32::from(file[counter]) << 24
| u32::from(file[counter + 1]) << 16
| u32::from(file[counter + 2]) << 8
| u32::from(file[counter + 3]);
println!("{:x}", ins);
}
Run Code Online (Sandbox Code Playgroud)
您在尝试移动24 位后u8进行了转换,这是您的问题。
| 归档时间: |
|
| 查看次数: |
7271 次 |
| 最近记录: |