rust - 从 u8 字节中提取 7 位有符号整数

标签 rust byte endianness

我正在使用人机接口(interface)设备协议(protocol)从外部设备获取数据。我正在使用的库返回一个字节数组 ([u8; 64]),我想从中提取一个 i7(这将是 i8 在 Rust 中)从一个字节开始。

我要操作的字节有两条不同的信息:

  • 1 比特用于某事
  • 其他 7 位(我必须将其解码为带符号的整数)用于另一件事。

你知道我该怎么做才能实现这一目标吗?

最佳答案

使用 the crate bitreader我已经能够正确解码 7 位的带符号整数。

let mut bit_reader = BitReader::new(buffer);
let first_useless_bit: u8 = bit_reader.read_u8(1).unwrap();
let extracted_value: i8 = bit_reader.read_i8(7).unwrap();

关于rust - 从 u8 字节中提取 7 位有符号整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43230917/

相关文章:

filesystems - 如何在 rust-fuse 中获取 UID 和 GID?

types - 创建一个基本上是 String 但与 String 不兼容的类型?

rust - 使用尺寸大于屏幕的 newpad 时出现问题

c# - 如何在 C# 中使用字节常量作为 switch case?

c++ - 写入带有偏移量的 mmap 文件,可能处理字节顺序

rust - 如何在 Rust 中拒绝没有显式类型注释的 int 变量?

c# - 字符串返回字节数组 - 不工作

c++ - 如何将位数组转换为字符

c++ - 使用 C++11 在编译时以编程方式查找字节序

c - 为什么 8 位字段具有字节顺序?