convert method
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();
}