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