Rust 如何将十六进制字符串转换为浮点数?
将十六进制字符串转换为浮点最简单的方法是什么?(不使用第三方板条箱) Rust是否提供了一些与Python的Rust 如何将十六进制字符串转换为浮点数?,rust,Rust,将十六进制字符串转换为浮点最简单的方法是什么?(不使用第三方板条箱) Rust是否提供了一些与Python的struct.unpack(“!f',bytes.fromhex('41973333'))等价的东西 请参阅此问题,以供参考。如果没有外部板条箱,这非常容易: fn main() { // Hex string to 4-bytes, aka. u32 let bytes = u32::from_str_radix("41973333", 16).unwrap();
struct.unpack(“!f',bytes.fromhex('41973333'))等价的东西
请参阅此问题,以供参考。如果没有外部板条箱,这非常容易:
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);
}
fn main(){
//十六进制字符串到4字节,又名.u32
让bytes=u32::from_str_radix(“41973333”,16).unwrap();
//将4字节重新解释为f32:
让float=unsafe{std::mem::transmute::(字节)};
//打印18.9
println!(“{}”,float);
}
在安全代码中有一个执行
转换的程序。请注意,转换与struct.unpack
不同,因为struct.unpack
允许您指定endianness并具有定义良好的IEEE表示。为什么不使用板条箱?因为这可以在其他语言的几行中完成,我想知道如何在不引入中间件的情况下进行原始操作。endianness问题很容易解决f32::from_bits
在正确处理NaN值方面也有优势。@mcarton不能完全确定from_bits
是否能更正确地处理NaN;只是比较保守。发信号的NAN是否真的会导致不安全的行为仍在争论中。@mcarton从_bits
到现在完全等同于转换
。