我想将1AGNa15ZQXAZUgFiqJ2i7Z2DPU2J6hW62i
base58 字符串转换为十六进制字符串。我开始将base58转换为十进制数,然后再转换为十六进制字符串。
fn base58_decode(code: &String) -> u128 {
use std::collections::HashMap;
const ALPHABET: &str = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
let keys = ALPHABET.chars();
let map: HashMap<_, u128> = keys.zip(0..).collect();
let mut result: u128 = 0;
for (n, ch) in code.chars().rev().enumerate() {
let value = map.get(&ch);
result += value.unwrap() * 58u128.pow(n as u32);
}
result
}
但是这段代码会引发溢出恐慌,所以我需要更好的算法。