相关疑难解决方法(0)

将hex转换为float

如何在Python中将以下十六进制字符串转换为float(单精度32位)?

"41973333" -> 1.88999996185302734375E1

"41995C29" -> 1.91700000762939453125E1

"470FC614" -> 3.6806078125E4
Run Code Online (Sandbox Code Playgroud)

python floating-point binary hex decimal

35
推荐指数
3
解决办法
5万
查看次数

如何在Java中将十六进制字符串转换为float?

如何在Java中将十六进制字符串转换为单精度浮点?

例如,如何实现:

float f = HexStringToFloat("BF800000"); // f现在应该包含-1.0

我问这个因为我试过了:

float f = (float)(-1.0);
String s = String.format("%08x", Float.floatToRawIntBits(f));
f = Float.intBitsToFloat(Integer.valueOf(s,16).intValue());
Run Code Online (Sandbox Code Playgroud)

但我得到以下异常:

java.lang.NumberFormatException:对于输入字符串:"bf800000"

java string floating-point hex

6
推荐指数
1
解决办法
2万
查看次数

是将字节转换为浮动安全还是可能产生未定义的行为?

是否存在字节序列,当转换为f32或者f64在Rust中产生未定义的行为时?我将非有限值(例如NaN,Infinity等)计为有效浮点值.

对此答案的评论暗示可能存在从原始字节转换浮点数的问题.

floating-point undefined-behavior rust

3
推荐指数
1
解决办法
610
查看次数

如何在 Rust 中将变量作为字符串文字传递?

我正在使用一个hex!只接受字符串文字的宏。我有一个从函数返回并存储在变量中的值。我无法对值进行硬编码并调用此函数。那么,如何hex!使用变量调用宏?

这是我的工作代码:

let account: AccountId32 = hex_literal::hex!["d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d"].into();
Run Code Online (Sandbox Code Playgroud)

这是我面临错误的代码:

let account_id = "d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d";
let account: AccountId32 = hex_literal::hex!(&account_id).into();
Run Code Online (Sandbox Code Playgroud)

错误是:

let account: AccountId32 = hex_literal::hex!["d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d"].into();
Run Code Online (Sandbox Code Playgroud)

hex!宏的所有示例仅使用字符串文字来演示它。

rust

0
推荐指数
1
解决办法
1051
查看次数

如何在 Rust 中将十六进制字符串转换为 f64?

基于以下问题:

如何在 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);
}
Run Code Online (Sandbox Code Playgroud)

这可以编译并运行,但根据https://www.h-schmidt.net/FloatConverter/IEEE754.html,答案应该是 -2456.11206055,而不是我得到的 0.000.... 数字。

我的 BE/LE 有问题吗?或者我犯了其他错误?

rust

0
推荐指数
1
解决办法
112
查看次数