将十六进制字符串转换为浮点数的最简单方法是什么? (不使用第三方包装箱)。
Rust是否提供了与Python struct.unpack('!f', bytes.fromhex('41973333'))
答案 0 :(得分:4)
如果没有外部板条箱,这很容易:
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);
}
答案 1 :(得分:4)
其中f32::from_bits
以安全代码执行transmute
。请注意,转换与struct.unpack
不同,因为struct.unpack
允许您指定字节顺序并且具有明确定义的IEEE表示。