将十六进制字符串转换为十进制整数
Converting a hexadecimal string to a decimal integer
我正在编写一个 Rust 程序来读取 I2C 总线并保存数据。当我读取 I2C 总线时,我得到 0x11
、0x22
等十六进制值
目前,我只能将其作为字符串处理并按原样保存。有没有办法将其解析为整数?有内置函数吗?
在大多数情况下,您希望一次解析多个十六进制字节。在这些情况下,使用 the hex crate.
parse this into an integer
您想使用 from_str_radix
。它是在整数类型上实现的。
use std::i64;
fn main() {
let z = i64::from_str_radix("1f", 16);
println!("{:?}", z);
}
如果您的字符串实际上有 0x
前缀,那么您需要跳过它们。最好的方法是通过 trim_start_matches
:
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);
}
我正在编写一个 Rust 程序来读取 I2C 总线并保存数据。当我读取 I2C 总线时,我得到 0x11
、0x22
等十六进制值
目前,我只能将其作为字符串处理并按原样保存。有没有办法将其解析为整数?有内置函数吗?
在大多数情况下,您希望一次解析多个十六进制字节。在这些情况下,使用 the hex crate.
parse this into an integer
您想使用 from_str_radix
。它是在整数类型上实现的。
use std::i64;
fn main() {
let z = i64::from_str_radix("1f", 16);
println!("{:?}", z);
}
如果您的字符串实际上有 0x
前缀,那么您需要跳过它们。最好的方法是通过 trim_start_matches
:
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);
}