digits method

Iterable<int> digits([
  1. int base = 10
])

Returns an iterable over the digits of this BigInt, in the optionally given base.

Implementation

Iterable<int> digits([int base = 10]) sync* {
  if (this == BigInt.zero) {
    yield 0;
  } else {
    var number = abs();
    final bigBase = BigInt.from(base);
    while (number != BigInt.zero) {
      final next = number ~/ bigBase;
      yield (number - next * bigBase).toInt();
      number = next;
    }
  }
}