Преобразование шестнадцатеричной строки в десятичное целое
Я пишу программу Rust, которая считывает данные с шины I2C и сохраняет данные. Когда я читаю шину I2C, я получаю шестнадцатеричные значения, такие как 0x11
, 0x22
, так далее.
Прямо сейчас я могу обработать это только как строку и сохранить как есть. Есть ли способ, которым я могу разобрать это в целое число? Есть ли встроенная функция для этого?
1 ответ
Решение
В большинстве случаев вы хотите проанализировать более одного шестнадцатеричного байта одновременно. В этих случаях используйте шестигранный ящик.
разобрать это в целое число
Вы хотите использовать 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);
}