我正在使用人机接口设备协议从外部设备获取数据。我使用的库返回一个字节数组([u8; 64]
),我想从一个字节中提取一个i7
(在Rust中是i8
)。
我要操作的字节包含两个不同的信息:
为了某样东西,一个位子
其他7位(我必须将其解码为有符号整数)用于另一件事。
你知道我能做些什么来达到这个目的吗?
最佳答案
你的问题还不清楚,但我想你只是在问正常的比特操作。屏蔽7位(假设较低的7位,尽管您没有说明),并将剩余的位转换为有符号的数字:
fn main() {
let byte = 0xFFu8;
let byte2 = (byte & 0b0111_1111) as i8;
println!("{}", byte2);
}