Converting a hexadecimal string to a decimal integ

2019-01-24 00:32发布

I'm writing a Rust program that reads off of an I2C bus and saves the data. When I read the I2C bus, I get hex values like 0x11, 0x22, etc.

Right now, I can only handle this as a string and save it as is. Is there a way I can parse this into an integer? Is there any built in function for it?

标签: parsing hex rust
1条回答
爷的心禁止访问
2楼-- · 2019-01-24 00:44

In most cases, you want to parse more than one hex byte at once. In those cases, use the hex crate.

parse this into an integer

You want to use from_str_radix. It's implemented on the integer types.

use std::i64;

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

If your strings actually have the 0x prefix, then you will need to skip over them. The best way to do that is via 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);
}
查看更多
登录 后发表回答