алгоритм преобразования строки base58 в шестнадцатеричную строку - PullRequest
0 голосов
/ 12 апреля 2020

Я хочу преобразовать строку 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
}

Но этот код создает переполнение pani c, поэтому мне нужен лучший алгоритм для него.

...