lzw编码c语言,LZW字典压缩算法的实现
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
对于这个对LZW压缩算法的实现 可以编译成静态库什么的来使用,下面是用它来压缩解压文件的例子:
#include
#include
#include
#include
LZWBOOL LZWBACKCALL LZW_PROC(LZWDWORD size,void *buffer,void *orgs)
{
if(fwrite(buffer,1,size,(FILE*)orgs) == 0)
return FALSE;
return TRUE;
}
//压缩文件
/*
int __cdecl main(int argc,char **argv)
{
FILE *i;
FILE *o;
LZWCOMPRESSER *pcompresser;
unsigned char arr[4096];
unsigned char arr2[4096];
size_t size;
pcompresser = (LZWCOMPRESSER*)malloc(sizeof(LZWCOMPRESSER));
i = fopen("C:\\Users\\XXXX\\Desktop\\a.bmp","rb");
o = fopen("C:\\Users\\XXXX\\Desktop\\a.lzw","wb");
if(i == NULL || o == NULL)
printf("error!\n");
LZWCompresser_Begin(pcompresser,2048,arr2,LZW_PROC,o);
printf("compressing ... \n");
while((size = fread(arr,1,4096,i)) > 0)
{
switch(LZWCompresser_Run(pcompresser,size,arr))
{
case LZWCOMPRESSER_OUTPUTERROR:
printf("Output Error!\n");
break;
case LZWCOMPRESSER_BUG:
printf("Bug!\n");
break;
default:;
}
}
LZWCompresser_End(pcompresser);
printf("end! \n");
fclose(i);
fflush(o);
fclose(o);
system("pause");
free(pcompresser);
return 0;
}
*/
//解压文件
int __cdecl main(int argc,char **argv)
{
FILE *i;
FILE *o;
LZWDECODER *pdecoder;
unsigned char arr[4096];
unsigned char arr2[4096];
size_t size;
pdecoder = (LZWDECODER*)malloc(sizeof(LZWDECODER));
i = fopen("C:\\Users\\XXXX\\Desktop\\a.lzw","rb");
o = fopen("C:\\Users\\XXXX\\Desktop\\b.bmp","wb");
if(i == NULL || o == NULL)
printf("error!\n");
LZWDecoder_Init(pdecoder,4096,arr2,LZW_PROC,o);
printf("decodeing ... \n");
while((size = fread(arr,1,4096,i)) > 0)
{
switch(LZWDecoder_Decode(pdecoder,size,arr))
{
case LZWDECODER_END:
printf("decode end! \n");
break;
case LZWDECODER_BUG:
printf("bug!\n");
break;
case LZWDECODER_OUTPUTERROR:
printf("writing error!\n");
break;
case LZWDECODER_CODEERROR:
printf("code error!\n");
break;
case LZWDECODER_DECODING:
continue;
}
break;
}
fclose(i);
fflush(o);
fclose(o);
system("pause");
free(pdecoder);
return 0;
}
本人比较懒 所以就写这样了
lzw编码c语言,LZW字典压缩算法的实现相关推荐
- lz78算法c语言,LZW数据压缩算法研究
内容介绍 LZW数据压缩算法研究 46页 3.2万字 摘 要 随着信息化技术的蓬勃发展,日常需要处理或者传输的数据越来越多,数据的压缩也就变得越来越重要了.我们迫切的需要有好的压缩算法来支持我们的数据 ...
- C语言实现LZW编码
LZW编码 算法思想 首先我们有一个0到255的ASCII码表,然后得到若干字符串对其进行编码,再对编码后的码流进行解码以验证. 编码: 初始化:前缀P为空,第一个字符进入后缀C 判断:P+C(P为a ...
- LZW编码与解码的那点事
1. 前言 在前面一片文章TIFF文件结构详解里,我们在解析TIF文件中,提到使用了LZW算法.那么LZW算法是什么呢?就让我们揭开它的神秘面纱. 2. 什么是LZW LZW算法又叫"串表压 ...
- Python实现英文文本的LZW编码压缩
LZW编码采用隐字典码的形式完成压缩. 文本中符号并不是独立存在的,前一个符号对后一个符号的出现有着很大影响. LZW算法利用文本开头部分的特征,作为整个文本的特征,即利用文本开头部分的内容,生成固定 ...
- LZW编码的学习与实现
大家好,现在是2020年5月19日,不知不觉5年过去了,看到最近还有很多人评论我的这篇文章,非常的开心和满足,显然我写这篇文章所做的微小贡献帮助到了一些人.今天我从头到尾再看了一遍我写的东西,还是有一 ...
- MATLAB实现LZW编码与解码
clear all clc str = input('请输入一串字符:','s'); disp("编码开始..."); %% 编码 N = length(str); % 获得输入字 ...
- 为什么倒排索引不采用zlib这样的字典压缩算法——因为没法直接使用啊
看了下压缩算法的发展历史,根据倒排索引的数据结构特点,个人认为zstd不适合做倒排索引压缩,举例说明下: 假设有一份文档倒排列表为:[300, 302, 303, 332],对于这组倒排数据,是没法* ...
- c语言怎么表示小写字母a到z,C++_C语言字符串快速压缩算法代码,通过键盘输入一串小写字母(a~z - phpStudy...
C语言字符串快速压缩算法代码 通过键盘输入一串小写字母(a~z)组成的字符串. 请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串. 压缩规则: 1.仅压缩连续重复出 ...
- C语言字母的压缩,C语言字符串快速压缩算法代码
C语言字符串快速压缩算法代码 大家知道C语言字符串快速压缩算法是怎么样的吗?下面小编为大家整理了C语言字符串快速压缩算法代码,希望能帮到大家! 通过键盘输入一串小写字母(a~z)组成的字符串. 请编写 ...
- [转载] python json 编码(dump/dumps:字典转化为json)、解码(load/loads:json转化为字典)
参考链接: Python-Json 2 : 使用json.load/loads读取JSON文件/字符串 python json 编码(dump/dumps:字典转化为json).解码(load/loa ...
最新文章
- 硬改TP-Link WR841N v8刷breed和OpenWrt
- Jan 09 - Number of 1 Bits; Bit Operation;
- npm教程:使用nrm切换镜像源
- C#基础加强(7)之ref与out
- c++ 提取傅里叶描述子_非谐声子模拟方法(Normal Mode Decomposition)
- relu函数_ECCV 2020,在视觉任务上大幅超越ReLU的新型激活函数
- 使用kubeadm安装k8s集群故障处理三则
- 慢性病管理系统/案列/APP/小程序/网站
- Re-parameterizing Your Optimizers rather than Architectures
- 2-1 Socket家族的基石
- L1-087 机工士姆斯塔迪奥-PAT 团体程序设计天梯赛 GPLT
- 转载 - Linux使用技巧锦集
- teredo报文格式
- 导数,偏导数,方向导数,梯度的理解---微积分数学基础
- doris ODBC 连接 mysql 外部表
- 网络世界有哪些不为人知的秘密?
- php如何做7天后自动售货店,PHP自动售货发卡网源码集成多种支付接口
- Pygame 教程(2):重要的概念及对象
- 超强大的dnsmasq及hosts全自动脚本扶墙去广告详细教程
- 计算机与汽车的论文,汽车计算机网络技术论文