fromBase58 method

String fromBase58()

Implementation

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

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

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

  for (var char in this.split('')) {
    if (char == '1')
      bytes.insert(0, 0);
    else
      break;
  }

  return utf8.decode(bytes);
}