convert method

  1. @override
String convert(
  1. Uint8List input
)
override

Converts input and returns the result of the conversion.

Implementation

@override
String convert(Uint8List input) {
  final buffer = StringBuffer();
  final length = input.length;

  int zeroCount = 0;
  for (; zeroCount < length && input[zeroCount] == 0;) {
    zeroCount++;
  }
  final data = input.sublist(zeroCount);
  final size = data.length * 138 ~/ 100 + 1;
  final output = Uint8List(size);
  final maxIndex = size - 1;
  for (final byte in data) {
    for (int carry = byte, i = 0; i < maxIndex || carry != 0; i++) {
      carry = carry + 256 * (0xFF & output[i]);
      output[i] = (carry % 58) & 0xFF;
      carry = carry ~/ 58;
    }
  }
  if (zeroCount > 0) buffer.write(_alphabet[0] * zeroCount);
  for (final i in output.reversed.skipWhile((e) => e == 0)) {
    buffer.write(_alphabet[i]);
  }

  return buffer.toString();
}