pack function
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;
}
}