Как преобразовать шестнадцатеричную строку в число с плавающей точкой в Rust?
2 ответа
Решение
Это довольно легко без внешних ящиков:
fn main() {
// Hex string to 4-bytes, aka. u32
let bytes = u32::from_str_radix("41973333", 16).unwrap();
// Reinterpret 4-bytes as f32:
let float = unsafe { std::mem::transmute::<u32, f32>(bytes) };
// Print 18.9
println!("{}", float);
}
Там в f32::from_bits
который выполняет transmute
в безопасном коде. Обратите внимание, что трансмутация не совпадает с struct.unpack
, поскольку struct.unpack
позволяет указывать порядковый номер и имеет четко определенное представление IEEE.