我想将一个
u16
转换为两个单独的 u8
。我尝试使用一些位掩码:use std::convert::From;
fn main() {
let n1: u8 = 0x41;
let n2: u16 = 0x4157;
println!("Number:{}", char::from(n1));
let b1: u8 = n2 & 0xFF;
let b2: u8 = n2 >> 8;
println!("b1: {}", b1);
println!("b2: {}", b2);
}
error[E0308]: mismatched types
--> src/main.rs:9:18
|
9 | let b1: u8 = n2 & 0xFF;
| ^^^^^^^^^ expected u8, found u16
error[E0308]: mismatched types
--> src/main.rs:10:18
|
10 | let b2: u8 = n2 >> 8;
| ^^^^^^^ expected u8, found u16
这个问题不是“为什么编译器会出现类型不匹配的错误?”,而是“如何在Rust中将u16
的低/高8位转换为u8
?”可能有其他方法可以做到这一点,而且这个问题并不限制答案只能使用as
关键字。