`tmp` is created as ` tmp = new DataView(new ArrayBuffer(arr.length*4)) ` which means that `tmp`'s length will be `Math.ceil(sjcl.bitArray.bitLength(arr)/32)*4` bytes while `out`'s length will be `sjcl.bitArray.bitLength(arr)/8+padding` bytes. In the case where you have say 1 byte of data, `tmp`'s arraybuffer will be 4 bytes, while `out`'s would be 1 byte. With padding, `out`'s byte length can be greater than `tmp`'s