parsing - Convertir una cadena hexadecimal en un entero decimal
rust (1)
Estoy escribiendo un programa Rust que se lee en un bus I2C y guarda los datos. Cuando leo el bus I2C, obtengo valores hexadecimales como 0x11
, 0x22
, etc.
En este momento, solo puedo manejar esto como una cadena y guardarlo como está. ¿Hay una manera de que pueda analizar esto en un número entero? ¿Hay alguna función incorporada para ello?
En la mayoría de los casos, desea analizar más de un byte hexadecimal a la vez. En esos casos, usa la caja hexagonal .
analizar esto en un número entero
Quieres usar from_str_radix
. Se implementa en los tipos enteros.
use std::i64;
fn main() {
let z = i64::from_str_radix("1f", 16);
println!("{:?}", z);
}
Si sus cadenas realmente tienen el prefijo 0x
, entonces deberá omitirlas. La mejor manera de hacerlo es a través de 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);
}