fromBase58 method

String fromBase58()

Implementation

String fromBase58() {
  const String base58Alphabet = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";
  BigInt intData = BigInt.zero;

  for (String char in split("")) {
    final int index = base58Alphabet.indexOf(char);
    if (index < 0) throw FormatException("Invalid Base58 character: $char");
    intData = intData * BigInt.from(58) + BigInt.from(index);
  }

  final List<int> bytes = <int>[];
  while (intData > BigInt.zero) {
    bytes.insert(0, (intData % BigInt.from(256)).toInt());
    intData = intData ~/ BigInt.from(256);
  }

  for (String char in split("")) {
    if (char == "1") {
      bytes.insert(0, 0);
    } else {
      break;
    }
  }

  return utf8.decode(bytes);
}