toBase58 method

String toBase58()

Implementation

String toBase58() {
  const base58Alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz';
  final input = utf8.encode(this);
  BigInt intData = BigInt.from(0);

  for (var byte in input) intData = intData * BigInt.from(256) + BigInt.from(byte);

  StringBuffer result = StringBuffer();
  while (intData > BigInt.zero) {
    final remainder = intData % BigInt.from(58);
    intData = intData ~/ BigInt.from(58);
    result.write(base58Alphabet[remainder.toInt()]);
  }

  for (var byte in input) {
    if (byte == 0)
      result.write(base58Alphabet[0]);
    else
      break;
  }

  return result.toString().split('').reversed.join();
}