資源簡介
本文檔包括了用C++實(shí)現(xiàn)的LZ77和LZ78對文件壓縮、解壓的完整代碼,壓縮率達(dá)到0.55,歡迎下載
說明:本程序是對書籍中的算法的直接實(shí)現(xiàn),因此速度不是很快,比如對2MB文本文件壓縮,LZ77是58s,LZ78是7s。
本程序?qū)ξ谋灸┪脖忍氐奶幚淼目紤]比較全面,大家可以參考一下
本程序可以通過調(diào)整兩個窗口的大小、處理字節(jié)等參數(shù)來改變壓縮率與壓縮速度

代碼片段和文件信息
#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
評論
共有 條評論