16
我正在编写一个读取I2C总线并保存数据的Rust程序。当我读I2C总线,我得到十六进制值,如0x11
,0x22
等将十六进制字符串转换为十进制
现在,我只能处理这个字符串并保存它。有没有办法我可以解析成一个整数?有没有内置函数?
我正在编写一个读取I2C总线并保存数据的Rust程序。当我读I2C总线,我得到十六进制值,如0x11
,0x22
等将十六进制字符串转换为十进制
现在,我只能处理这个字符串并保存它。有没有办法我可以解析成一个整数?有没有内置函数?
您想使用from_str_radix
。它在整数类型上实现。
use std::i64;
fn main() {
let z = i64::from_str_radix("1f", 16);
println!("{:?}", z);
}
如果你的字符串实际上有0x
前缀,那么你将需要跳过它们。最快的方法是:
use std::i64;
fn main() {
let raw = "0x1f";
let z = i64::from_str_radix(&raw[2..], 16);
println!("{:?}", z);
}
太好了,谢谢!为了澄清,'[2 ..]'是如何跳过前两个空格? (如'0'和'x') – tsf144
@ tsf144,它是切片语法。 '&raw [2 ..]'是'raw'的第二个字节开始的'raw'的一个子字符串。 –
@ tsf144弗拉基米尔所说的。重要的部分是它是**字节**。在这种情况下,它看起来像有ASCII编码的字符串,所以一个字符==一个字节。 – Shepmaster