资源简介
LZW完整压缩/解压缩算法,可以直接对文件操作!VS2013编译通过!
代码片段和文件信息
#include “Compress.h“
compress::compress(string _infile string _outfile)
{
infile.open(_infile ifstream::binary);
outfile.open(_outfile ifstream::binary);
InBuffer_dex = InBuffer_Maxdex = BufferSize;
InBuffer = (UCHAR *)(new char[BufferSize]); //读文件缓冲
OutBuffer = (UCHAR *)(new char[BufferSize]); //写文件缓冲
tempcode = EMPTY;
OutBuffer_dex = 0;
Count = 0;
_con = 0;
table = new TABLE[4096]; //字典初始化
}
compress::~compress()
{
infile.close();
outfile.close();
delete[] InBuffer;
delete[] OutBuffer;
delete[] table;
}
bool compress::CheckFile()
{
if (!infile.is_open() || !outfile.is_open())
{
cout << “Files can‘t be opened!!“ << endl;
return false;
}
return true;
}
void compress::Intial()//重置字典数据
{
for (UINT i = 0; i < 4096; i++)
{
if (i <=END)
{
table[i].code = i;
table[i].used = true;
}
else
{
table[i].precode = EMPTY;
table[i].code = EMPTY;
table[i].used = false;
}
}
}
UINT compress::CheckTable(UINT pre_codeUINT code)//查字典
{
for (UINT i = END+1; i < 4096; i++)
{
if (table[i].used == true)
{
if (table[i].precode == pre_code && table[i].code == code)
return i;
}
else //加入到字典中
{
if (i >= 4095)
{
_con++;
return NEW_TABLE;
}
else
{
table[i].precode = pre_code;
table[i].code = code;
table[i].used = true;
return EMPTY;
}
}
}
return EMPTY;
}
UCHAR compress::ReadChar() //读取8位数据
{
Count++;
if (Count % 10000 == 0)
{
cout << ‘.‘;
if (Count %100000==0)
{
cout << endl;
Count = 0;
}
}
if (InBuffer_dex >= BufferSize || InBuffer_dex >= InBuffer_Maxdex)
{
infile.read((char *)InBuffer BufferSize);
InBuffer_Maxdex = (unsigned int)infile.gcount();
InBuffer_dex = 0;
}
return InBuffer[InBuffer_dex++];
}
bool compress::WriteChar(UINT code)
{
if ( tempcode == EMPTY)
{
OutBuffer[OutBuffer_dex++] = code & 0xff; //写入低8位
tempcode = (code >> 4) & 0xF0;
}
else
{
OutBuffer[OutBuffer_dex++] = code & 0xff;
OutBuffer[OutBuffer_dex++] = (tempcode | ((code >> 8) & 0xf))&0xff;
tempcode = EMPTY;
}
if (OutBuffer_dex >= BufferSize)
{
outfile.write((char *)OutBuffer OutBuffer_dex );
OutBuffer_dex = 0;
}
return true;
}
bool compress::CheckEOF() //检测文件结束
{
if ( infile.eof() && InBuffer_dex >= InBuffer_Maxdex)
return true;
else
return false;
}
void compress::WriteEnd() //写最后的若干字节
{
if (tempcode != EMPTY)
{
WriteChar(END);
}
else
{
WriteChar(END);
WriteChar(END);
}
if (OutBuffer_dex != 0)
outfile.write((char *)OutBuffer OutBuffer_dex );
cout << “Compressed file has been created !“ << endl;
cout << “The number of table is “<<_con < }
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2015-12-20 14:48 LZW压缩算法\
目录 0 2015-12-20 14:48 LZW压缩算法\LZW\
目录 0 2015-12-20 14:48 LZW压缩算法\LZW\Debug\
文件 102912 2015-12-20 14:39 LZW压缩算法\LZW\Debug\compress.exe
文件 1281376 2015-12-20 14:39 LZW压缩算法\LZW\Debug\compress.ilk
文件 1454080 2015-12-20 14:39 LZW压缩算法\LZW\Debug\compress.pdb
文件 100864 2015-12-20 14:40 LZW压缩算法\LZW\Debug\decompress.exe
文件 949536 2015-12-20 14:40 LZW压缩算法\LZW\Debug\decompress.ilk
文件 1372160 2015-12-20 14:40 LZW压缩算法\LZW\Debug\decompress.pdb
文件 8257536 2015-12-20 14:41 LZW压缩算法\LZW\LZW.sdf
文件 1439 2015-12-17 16:43 LZW压缩算法\LZW\LZW.sln
文件 44544 2015-12-20 14:41 LZW压缩算法\LZW\LZW.v12.suo
目录 0 2015-12-20 14:48 LZW压缩算法\LZW\compress\
文件 2842 2015-12-20 14:37 LZW压缩算法\LZW\compress\Compress.cpp
文件 991 2015-12-20 14:39 LZW压缩算法\LZW\compress\Compress.h
目录 0 2015-12-20 14:48 LZW压缩算法\LZW\compress\Debug\
文件 276314 2015-12-20 14:39 LZW压缩算法\LZW\compress\Debug\Compress.obj
文件 593 2015-12-14 19:50 LZW压缩算法\LZW\compress\Debug\compress.Build.CppClean.log
文件 1399 2015-12-20 14:39 LZW压缩算法\LZW\compress\Debug\compress.log
目录 0 2015-12-20 14:48 LZW压缩算法\LZW\compress\Debug\compress.tlog\
文件 22754 2015-12-20 14:39 LZW压缩算法\LZW\compress\Debug\compress.tlog\CL.read.1.tlog
文件 1010 2015-12-20 14:39 LZW压缩算法\LZW\compress\Debug\compress.tlog\CL.write.1.tlog
文件 1118 2015-12-20 14:39 LZW压缩算法\LZW\compress\Debug\compress.tlog\cl.command.1.tlog
文件 144 2015-12-20 14:39 LZW压缩算法\LZW\compress\Debug\compress.tlog\compress.lastbuildstate
文件 1068 2015-12-20 14:39 LZW压缩算法\LZW\compress\Debug\compress.tlog\li
文件 2446 2015-12-20 14:39 LZW压缩算法\LZW\compress\Debug\compress.tlog\li
文件 340 2015-12-20 14:39 LZW压缩算法\LZW\compress\Debug\compress.tlog\li
文件 138920 2015-12-20 14:39 LZW压缩算法\LZW\compress\Debug\main.obj
文件 355328 2015-12-20 14:39 LZW压缩算法\LZW\compress\Debug\vc120.idb
文件 356352 2015-12-20 14:39 LZW压缩算法\LZW\compress\Debug\vc120.pdb
文件 4198 2015-12-13 15:55 LZW压缩算法\LZW\compress\compress.vcxproj
............此处省略23个文件信息
- 上一篇:冰点文库器 免安装版 绿色版 破解版
- 下一篇:基于vhdl的cpu设计
相关资源
- 常用压缩算法源代码
- 数据压缩导论,第5版Introduction to Da
- 基于FPGA的数据实时无损压缩系统设计
- 基于对象的多媒体数据压缩编码国际
- 数据压缩原理与应用 第二版.pdf
- 论文研究-增强型矢量数据压缩算法的
- 武汉市水系数据压缩文件
- LZ77数据无损压缩算法,可以直接运行
- 论文研究-视觉无损的SVG空间矢量数据
- 数据压缩算法的实现代码可运行
- lzw压缩与解压
- 道格拉斯曲线矢量数据压缩算法
- 知识图谱相关数据压缩包
- TIFF图像处理代码,支持GROUP4格式,和
- 数据压缩+课后答案+吴乐南
- 矢量空间数据压缩隔点抽样法
- 合成孔径SAR BAQ压缩方法
- 数据结构课程设计 哈夫曼编码的数据
- 用LZW压缩算法实现的编码与解码
- 数据压缩 LZW编码
评论
共有 条评论