我正在写一个Rust程序,读取I2C总线并保存数据.当我读取I2C总线时,我会得到十六进制值,比如0x110x22等等.

现在,我只能将其作为字符串处理并保存为原样.有没有办法把它解析成一个整数?它有内置的功能吗?

推荐答案

在大多数情况下,您希望一次解析多个十六进制字节.在这些情况下,使用the hex crate.

将其解析为整数

你想用from_str_radix.它是在整数类型上实现的.

use std::i64;

fn main() {
    let z = i64::from_str_radix("1f", 16);
    println!("{:?}", z);
}

如果字符串实际上有0x前缀,则需要跳过它们.最好的方法是通过trim_start_matches:

use std::i64;

fn main() {
    let raw = "0x1f";
    let without_prefix = raw.trim_start_matches("0x");
    let z = i64::from_str_radix(without_prefix, 16);
    println!("{:?}", z);
}

Rust相关问答推荐

如何导出 rust 色二进制文件中的符号

修改切片/引用数组

在Rust中,如果Result是Err,运行副作用(如日志(log)记录)的惯用方法是什么

交换引用时的生命周期

如何在递归数据 struct 中移动所有权时变异引用?

在Rust内联程序集中使用字符串常量

这是什么:`impl Trait for T {}`?

使用 serde::from_value 反序列化为泛型类型

Rust,如何从 Rc> 复制内部值并返回它?

如何在 Rust 中编写一个通用方法,它可以接受任何可以转换为另一个值的值?

OpenGL 如何同时渲染无纹理的四边形和有纹理的四边形

Rust中的位移操作对范围有什么影响?

decltype、dyn、impl traits,重构时如何声明函数的返回类型

实现泛型的 Trait 方法中的文字

Rust 生命周期:这两种类型声明为不同的生命周期

使用 HashMap 条目时如何避免字符串键的短暂克隆?

深度嵌套枚举的清洁匹配臂

Rust 生命周期:不能在方法内重新borrow 可变字段

在 Rust 中组合特征的不同方法是否等效?

为什么 `ref` 会导致此示例*取消引用*一个字段?