public byte[] Compress(byte[] data) { var huffmanEncodedMessage = new List <bool>(); foreach (var bt in data) { huffmanEncodedMessage.AddRange(_table.GetBits(bt)); } // Adds most significant bytes of EOS int temp = 8 - huffmanEncodedMessage.Count % 8; int numberOfBitsInPadding = temp == 8 ? 0 : temp; for (int i = 0; i < numberOfBitsInPadding; i++) { huffmanEncodedMessage.Add(HuffmanCodesTable.Eos[i]); } return(BinaryConverter.ToBytes(huffmanEncodedMessage)); }