• 大小: 261KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-18
  • 语言: C/C++
  • 标签: LZ77  LZ78  编码  译码  C++  

资源简介

本文档包括了用C++实现的LZ77和LZ78对文件压缩、解压的完整代码,压缩率达到0.55,欢迎下载 说明:本程序是对书籍中的算法的直接实现,因此速度不是很快,比如对2MB文本文件压缩,LZ77是58s,LZ78是7s。 本程序对文本末尾比特的处理的考虑比较全面,大家可以参考一下 本程序可以通过调整两个窗口的大小、处理字节等参数来改变压缩率与压缩速度

资源截图

代码片段和文件信息

#include
#include“myclass.h“
using namespace std;
int main(void) {
File2mark file2mark;
File2char file2char;
string filename1;
string filename2;
int choice = 1;
string stringin;
cout << “input a integer:0-exit1-encode2-decode:\n“;
cin >> stringin;
if (stringin.at(0) >= ‘0‘&&stringin.at(0) <= ‘2‘) {
choice = stringin.at(0) - ‘0‘;
}
else {
choice = 3;
}
while (choice != 0) {
if (choice == 1) {
cout << “input file name:\n“;
cin >> filename1;
filename2 = filename1 + “.lz77“;
file2mark.file_encode(filename1 true filename2);
}
else if (choice == 2) {
cout << “input file name:\n“;
cin >> filename1;
cout << “input new file name:\n“;
cin >> filename2;
file2char.file_decode(filename1 true filename2);
}
else if (choice == 3) {
cout << “input error\n“;
}
cout << “over\n“;
cout << “input a integer:0-exit1-encode2-decode:\n“;
cin >> stringin;
if (stringin.at(0) >= ‘0‘&&stringin.at(0) <= ‘2‘) {
choice = stringin.at(0) - ‘0‘;
}
else {
choice = 3;
}
}
cin.get();
return 0;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-09-24 16:55  LZ\
     目录           0  2017-09-24 16:56  LZ\LZ77\
     文件        1120  2017-07-04 23:42  LZ\LZ77\LZ77.cpp
     文件      252928  2017-09-24 16:16  LZ\LZ77\LZ77.exe
     文件       11531  2017-07-04 23:44  LZ\LZ77\myclass.h
     文件         358  2017-07-04 23:41  LZ\LZ77\parameter.h
     目录           0  2017-09-24 16:55  LZ\LZ78\
     文件        1120  2017-07-04 21:28  LZ\LZ78\LZ78.cpp
     文件      269312  2017-09-24 16:39  LZ\LZ78\LZ78.exe
     文件       12412  2017-07-04 21:28  LZ\LZ78\myclass.h
     文件         525  2017-07-04 21:28  LZ\LZ78\parameter.h

评论

共有 条评论