encodeBytes method
Implementation
List<int> encodeBytes(List<int> data) {
if (_codes.isEmpty) build(data);
final bits = StringBuffer();
for (var b in data) {
bits.write(_codes[b]);
}
// pad to byte boundary with zeros and store padding size
final pad = (8 - (bits.length % 8)) % 8;
for (var i = 0; i < pad; i++) {
bits.write('0');
}
final out = <int>[];
out.add(pad); // first byte is padding length
for (var i = 0; i < bits.length; i += 8) {
final byteStr = bits.toString().substring(i, i + 8);
out.add(int.parse(byteStr, radix: 2));
}
return out;
}