Adam-Xi / GZIP-FileComress

练手小项目,基于LZ77算法和Huffman算法的GZIP压缩
0 stars 0 forks source link

解压缩 #1

Open edw4rdyao opened 4 years ago

edw4rdyao commented 4 years ago

请问解压缩过程可以优化吗

Adam-Xi commented 4 years ago

可以的 其实这个Huffman算法很耗时,效率并不很高,你可以了解一下范式Huffman算法的原理。这个算法相比来说主要优势就是在解压缩期间。LZ77的话暂时没有改进的思路~~~

edw4rdyao commented 4 years ago

可以的 其实这个Huffman算法很耗时,效率并不很高,你可以了解一下范式Huffman算法的原理。这个算法相比来说主要优势就是在解压缩期间。LZ77的话暂时没有改进的思路~~~ 嗯,谢谢☺ 我只是发现LZ77算法的解压缩过程的下面这一个部分耗时比较长,正在想其他比较快速的方法😀:


if (chFlag & 0x80)
        {
            // 距离长度对
            USH matchLength = fgetc(fIN) + 3;
            USH matchDistance = 0;
            fread(&matchDistance, sizeof(matchDistance), 1, fIN);

            // 清空缓冲区:系统会将缓冲区中的数据写入到文件中
            fflush(fOUT);

            // 更新已经解码字节数大小
            encodeCount += matchLength;

            //移动文件指针至匹配字符处
            fseek(fOutIn, 0 - matchDistance, SEEK_END);

            //写入匹配的字符
            for (size_t i = 0; i < matchLength; i++) {
                fputc((fflush(fOUT), fgetc(fOutIn)), fOUT);
            }
        }
yangyongkang2000 commented 3 years ago

请问解压缩过程可以优化吗

可以看看我最近写的,欢迎测试。https://github.com/yangyongkang2000/C-Programming/tree/master/Huffman/Huffman