patternrustCritical
Converting a hexadecimal string to a decimal integer
Viewed 0 times
convertingintegerdecimalhexadecimalstring
Problem
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
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?
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?
Solution
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
If your strings actually have the
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_start_matches or strip_prefix: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);
}Code Snippets
use std::i64;
fn main() {
let z = i64::from_str_radix("1f", 16);
println!("{:?}", z);
}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);
}Context
Stack Overflow Q#32381414, score: 128
Revisions (0)
No revisions yet.