encodeBytes method

List<int> encodeBytes(
  1. List<int> data
)

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