将十六进制字符串转换为十进制整数

时间:2015-09-03 16:52:45

标签: parsing hex rust

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

现在,我只能将其作为字符串处理并按原样保存。有没有办法可以解析为整数?它有内置功能吗?

1 个答案:

答案 0 :(得分:32)

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

  

将其解析为整数

您想使用from_str_radix。它是在整数类型上实现的。

use std::i64;

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

如果你的字符串实际上有0x前缀,那么你需要跳过它们。最好的方法是通过trim_left_matches

use std::i64;

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