const data = [1,0,0,0,1,0,1,1,1,0,1,0,0,0,1,0,1,1,1,0,1,0,0,0,1,0,0,1,0,1,0,1,1,0,1]
const pack = (values) => {
let chunks = values.match(/.{1,16}/g),
packed = "";
for (let i = 0; i < chunks.length; i++) {
packed += String.fromCharCode(parseInt(chunks[i], 2));
}
return packed;
};
const unpack = (packed) => {
let values = "";
for (let i = 0; i < packed.length; i++) {
values += packed.charCodeAt(i).toString(2);
}
return values;
};
let packed = pack(data.join(""));
let unpacked = unpack(packed);
console.log(data.length, data.join(""), unpacked);