let hex = "100000000000000000".as_bytes().to_hex();
// hex == "313030303030303030303030303030303030"
println!("{:x}", 100000000000000000000000u64);
// literal out of range for u64
我如何获得该价值?
在Python中,我只打电话给hex(100000000000000000000000)
我'0x152d02c7e14af6800000'
。
to_hex()
来自六角箱子。
需要注意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
在一般情况下,需要明确使用任意精度算术。从一些建议什么是对锈病高精度计算最好的箱子?在Reddit上:
num_bigint
工作稳定,没有不安全的代码。ramp
使用不安全并且无法在稳定的Rust上运行,但是速度更快。rust-gmp
并rug
绑定到最新的C语言bigint实现(GMP)。它们是最快的,具有最多的功能。您可能要使用其中之一。本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句