convert method

dynamic convert(
  1. dynamic number
)

Implementation

dynamic convert(dynamic number) {
  number = number.toString();
  var i,
      divide,
      newlen,
      numberMap = {},
      fromBase = srcAlpha.length,
      toBase = dstAlpha.length,
      length = number.length,
      result = number.runtimeType == String ? '' : [];

  if (!isValid(number)) {
    throw Exception('Number "' +
        number +
        '" contains non-alphabetic digits (' +
        srcAlpha +
        ')');
  }

  if (srcAlpha == dstAlpha) {
    return number;
  }

  for (i = 0; i < length; i++) {
    numberMap[i] = srcAlpha.indexOf(number[i]);
  }
  do {
    divide = 0;
    newlen = 0;
    for (i = 0; i < length; i++) {
      divide = divide * fromBase + numberMap[i];
      if (divide >= toBase) {
        numberMap[newlen++] = (divide / toBase).toInt();
        divide = divide % toBase;
      } else if (newlen > 0) {
        numberMap[newlen++] = 0;
      }
    }
    length = newlen;
    result = dstAlpha.substring(divide, divide + 1) + result.toString();
  } while (newlen != 0);

  return result;
}