Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust 如何将十六进制字符串转换为浮点数?_Rust - Fatal编程技术网

Rust 如何将十六进制字符串转换为浮点数?

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();

将十六进制字符串转换为浮点最简单的方法是什么?(不使用第三方板条箱)

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();

    // 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
到现在完全等同于
转换