Я хочу преобразовать 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
Этот вопрос не , почему компилятор вызывает ошибку несоответствующего типа? , скорее, это Как я могу преобразовать младшие / старшие 8 бит u16
в u8
в ржавчине? . Потенциально, есть другие способы сделать это, и этот вопрос не ограничивает ответ на ключевое слово as
.