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);
}
解决方案
你得到了你的操作员优先级并且投错了:
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);
}
您在尝试移动24 位后进行投射,这是您的问题。u8
推荐阅读
- c# - 将 2 个转换为 int 的数组字符串加在一起时出现我不明白的错误
- google-app-engine - 如何查看 App Engine 上的每日实例使用情况?
- git - 如何压缩来自将另一个 repo 集成到分支中的旧提交?
- java - 在 JAVA 中将无效字符串传递给 SimpleDateFormat 时引发异常
- apache-kafka - Kafka生产者回调异常
- android - 如何从 webview android 中获取所有 cookie 数据?
- java - Ambari Admin View 2.7.5.0.0 构建失败
- nestjs - 如何使用lerna 管理nestJS 项目?
- office-js - 如何使用刷新令牌在 Excel 加载项中使用 OfficeJS 获取新的访问令牌
- angular - 可观察的角度导航路由器无法工作