gpt4 book ai didi

rust - 如何将非常大的十进制字符串转换为十六进制?

转载 作者:行者123 更新时间:2023-11-29 08:13:48 25 4
gpt4 key购买 nike

let hex = "100000000000000000".as_bytes().to_hex();
// hex == "313030303030303030303030303030303030"

println!("{:x}", 100000000000000000000000u64);
// literal out of range for u64

我怎样才能得到那个值?

在 Python 中,我只需调用 hex(100000000000000000000000) 并得到 '0x152d02c7e14af6800000'

to_hex() 来自 hex crate .

最佳答案

需要了解 Rust 中不同数字类型的可表示值范围。在这种特殊情况下,该值超出了 u64 的限制,但 u128 类型容纳了该值。以下代码输出与 Python 示例相同的值:

fn main() {
let my_string = "100000000000000000000000".to_string(); // `parse()` works with `&str` and `String`!
let my_int = my_string.parse::<u128>().unwrap();
let my_hex = format!("{:X}", my_int);
println!("{}", my_hex);
}

Rust Playground 检查过:

152D02C7E14AF6800000

在一般情况下,需要明确使用任意精度算术。 What's the best crate for arbitrary precision arithmetic in Rust?的一些建议在 Reddit 上:

  • num_bigint 稳定运行,没有不安全的代码。
  • ramp 使用 unsafe 并且不能在稳定的 Rust 上工作,但速度更快。
  • rust-gmprug 绑定(bind)到 C (GMP) 中最先进的 bigint 实现。它们速度最快,功能最多。您可能想使用其中之一。

关于rust - 如何将非常大的十进制字符串转换为十六进制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53353764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com