資源簡介
LZW就是通過建立一個字符串表,用較短的代碼來表示較長的字符串來實現壓縮.?LZW編碼是基于1977年開發的LZ77算法為基礎的。LZ77編碼算法的核心是查找從前向緩沖存儲器開始的最長的匹配串。LZW壓縮算法的基本原理:提取原始文本文件數據中的不同字符,基于這些字符創建一個編譯表,然后用編譯表中的字符的索引來替代原始文本文件數據中的相應字符,減少原始數據大小??雌饋砗驼{色板圖象的實現原理差不多,但是應該注意到的是,我們這里的編譯表不是事先創建好的,而是根據原始文件數據動態創建的,解碼時還要從已編碼的數據中還原出原來的編譯表
代碼片段和文件信息
//LAW?編碼
#include?
#include?
#include?
#include?
#include?
#include?
using?namespace?std;
void?init(vector&?vstr)//字符種數???????
{
string?s;
for(int?i=0;i<26;i++)
{
s.clear();
s.push_back((char)(i+97));
vstr.push_back(s);
}
s.clear();
s.push_back(‘‘);
vstr.push_back(s);
s.clear();
s.push_back(‘;‘);
vstr.push_back(s);
s.clear();
s.push_back(‘.‘);
vstr.push_back(s);
s.clear();
s.push_back(‘?‘);
vstr.push_back(s);
}
int?main()
{
fstream?text(“text.txt“);??????????//待編碼的文本文件?
string?str;
char?ctxt;
while(!text.eof())???????????????????
{ text.get(ctxt);
str.push_back(ctxt);
}
text.close();
str.erase(str.length()-11);
ofstream?lzwsend(“out.txt“);?????????
vector?vs;??????????????????????
init(vs);???????????????????????????????
string?strf;
int?point=0;??????????????????????????//標志位
strf.push_bac
- 上一篇:一位滑動窗口協議模擬 c語言實現
- 下一篇:C語言教案 環節完整 譚浩強版
評論
共有 條評論