基于以下问题:
How to convert hex string to a float in Rust?
我尝试了以下代码:
fn main() {
// Hex string to 8 bytes, aka. u64
let bytes = u64::from_str_radix("c51981cb", 16).unwrap();
// Reinterpret 8 bytes as f64:
let float = unsafe { std::mem::transmute::<u64, f64>(bytes) };
println!("float: {}", float);
}
字符串
这将编译并运行,但根据https://www.h-schmidt.net/FloatConverter/IEEE754.html,答案应该是-2456.11206055,而不是0.000....我得到的号码。
我对BE/LE有问题吗?还是我犯了别的错误?
1条答案
按热度按时间a11xaf1n1#
您链接的计算器是用于单精度浮点值的,但您的代码假定为双精度浮点,实际上将单精度浮点类型转换为
u32
和f32
会得到预期的结果:字符串