Esempio n. 1
0
        public byte[] Encode()
        {
            var rleResult1 = RLE(this.Bytes);
            var bwtResult  = BWT(rleResult1);
            var mtfResult  = MTF(bwtResult.Bytes);
            var rleResult2 = RLE(mtfResult);
            var hufResult  = Huffman(rleResult2);

            CompressedData compressedData = new CompressedData(
                bwtInitialStringIndex: bwtResult.InitialStringIndex,
                hufSymbolsCount: hufResult.BytesCounts.Count,
                hufBytesCounts: hufResult.BytesCounts,
                hufBits: hufResult.Bits);

            byte[] result = compressedData.ToByteArray();

            return(result);
        }