decodeByLength method

List<int> decodeByLength({
  1. required List<int?> tmpArr,
  2. required List<int> op,
})

Implementation

List<int> decodeByLength(
    {required List<int?> tmpArr, required List<int> op}) {
  final s0 = tmpArr[0];
  final s1 = tmpArr[1];
  final s2 = tmpArr.length <= 2 ? null : tmpArr[2];
  final s3 = tmpArr.length <= 3 ? null : tmpArr[3];
  var c0 = 0;
  var c1 = 0;
  var c2 = 0;
  List<int> _op = [...op];
  if (s3 != null) {
    c0 = s0! << 2 | s1! >> 4;
    c1 = ((s1 << 4) & 0xf0) | (s2! >> 2);
    c2 = ((s2 << 6) & 0xff) | s3;
    _op.add(c0);
    _op.add(c1);
    _op.add(c2);
  } else if (s2 != null) {
    c0 = s0! << 2 | s1! >> 4;
    c1 = ((s1 << 4) & 0xf0) | s2;
    _op.add(c0);
    _op.add(c1);
  } else if (s1 != null) {
    c0 = s0! << 2 | s1;
    _op.add(c0);
  } else {
    c0 = s0!;
    _op.add(c0);
  }
  return _op;
}