我正在使用人机接口设备协议从外部设备获取数据。我使用的库返回一个字节数组([u8; 64]),我想从一个字节中提取一个i7(在Rust中是i8)。
我要操作的字节包含两个不同的信息:
为了某样东西,一个位子
其他7位(我必须将其解码为有符号整数)用于另一件事。
你知道我能做些什么来达到这个目的吗?

最佳答案

你的问题还不清楚,但我想你只是在问正常的比特操作。屏蔽7位(假设较低的7位,尽管您没有说明),并将剩余的位转换为有符号的数字:

fn main() {
    let byte = 0xFFu8;
    let byte2 = (byte & 0b0111_1111) as i8;
    println!("{}", byte2);
}

10-05 21:13
查看更多