pack function

void pack(
  1. Iterable<int> input,
  2. int base,
  3. int mask,
  4. List<int> out,
  5. int outStart,
)

Implementation

void pack(
    Iterable<int> input, int base, int mask, List<int> out, int outStart) {
  int v = 0;
  for (int byte in input) {
    v <<= 8;
    v |= byte;
  }
  int count = ((input.length * 8) / base).ceil();
  for (int i = 0; i < count; i++) {
    int j = count - 1 - i;
    out[outStart++] = (v >> j * base) & mask;
  }
}