资源简介
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语言教案 环节完整 谭浩强版
评论
共有 条评论