16
私はI2Cバスを読み込んでデータを保存するRustプログラムを書いています。私はI2Cバスを読むと、0x11
,0x22
などのような16進値を得ます。16進文字列を10進数に変換する
今私はこれを文字列として扱い、それをそのまま保存することができます。これを整数に解析できる方法はありますか?そのための関数が組み込まれていますか?
私はI2Cバスを読み込んでデータを保存するRustプログラムを書いています。私はI2Cバスを読むと、0x11
,0x22
などのような16進値を得ます。16進文字列を10進数に変換する
今私はこれを文字列として扱い、それをそのまま保存することができます。これを整数に解析できる方法はありますか?そのための関数が組み込まれていますか?
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 ..]」は最初の2つのスペースをスキップする方法です。 ( '0'や 'x'以上のような) – tsf144
@ tsf144では、構文をスライスしています。 '&raw [2 ..]'は 'raw'の2番目のバイトから始まる' raw'の部分文字列です。 –
@ tsf144ちょうどウラジミールは言った。重要なのは**バイト**です。この場合、ASCIIエンコードされた文字列があるように見えます。したがって、1文字== 1バイトです。 – Shepmaster