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
在一般情况下,需要明确使用任意精度的算术。Rust中任意精度运算的最佳机箱是什么?在Reddit上:
num_bigint
在稳定环境下工作,没有不安全的代码ramp
使用了不安全的,不适用于稳定的Rust,但速度更快- CCD_ 8和CCD_。它们速度最快,功能最多。你可能想用其中一个