数据快速压缩算法的研究以及c语言实现

数据快速压缩算法的研究以及c语言实现

ID:9640504

大小:52.00 KB

页数:2页

时间:2018-05-04

数据快速压缩算法的研究以及c语言实现_第1页
数据快速压缩算法的研究以及c语言实现_第2页
资源描述:

《数据快速压缩算法的研究以及c语言实现》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、数据快速压缩算法的研究以及C语言实现数据快速压缩算法的研究以及C语言实现引言  现有的压缩算法有很多种,但是都存在一定的局限性,比如:LZ2,char*cRet)  /*数字字符串解压缩*/char*unpress(char*cRet,char*cNum2)  3.3算法的优化  ①前置数字字符0,比如012345解压缩的时候0就会丢掉,解决的办法就是在每一组之前加固定的数字字符,我们加固定的1,如staticchar*addFixedNum(char*cNum,char*cNumFixed),/*解压缩时去掉*/staticchar*delFixedNum(char*cNumFixed,ch

2、ar*cNum)。  ②不同操作系统的大端(BigEndian)小端(LittleEndian)问题,比如:windows是小端规则,unix是大端规则。通过定义宏#defineL_ENDIAN,来解决该问题。  ③对于字符转换为数字后,十六进制数字中间字节含0x00的情况处理,如下:1011000012120000123915150101转换成十六进制0xAB0x000xcc0x000x120x390xff0x11,考虑到数据类型short是2位且有符号位的,而我们需要压缩的数子字符不存在正负的情况,则可利用该符号位,对含有0x00的压缩片段打上一个标记。  3.4关键代码  ①单元压缩  

3、staticchar*press_unit(char*cNum,char*cRet)  {LONGl=atoLONG(cNum);  returngetChar(l,cRet);}  ②单元解压缩  staticchar*unpress_unit(char*cRet,char*cNum){  inti=0;unsignedcharc;unionunu;  for(i=0;i<NUM;i++){    c=c>>7;  if(c>0){u.c[1]=0x7f;u.c[0]=0x00;}  returnLONGtoa(u.l,cNum);}  ③数字字符串压缩  char*

4、press(char*cNum2,char*cRet){  count=strlen(cNum)/MAX_LEN+((strlen(cNum)%MAX_LEN)==0?0:1);  for(;i<count;i++){  memset(cNum_unit,0x00,sizeof(cNum_unit));    len+=NUM;}  returncRet;}  ④数字字符串解压缩  char*unpress(char*cRet,char*cNum2){  memset(cNum,0x00,sizeof(cNum));  count=strlen(cRet)/NUM+((strlen(cR

5、et)%NUM)==0?0:1);  for(;i<count;i++){  }  returndelFixedNum(cNum,cNum2);}  3.5算法的实现  以s1为需要进行压缩的数字字符,s2为压缩后的字符,s3为解压缩后的字符进行验证,验证函数如下。  voidmain(){    chars1[]="0123456789012345678901234567890123456";  chars2[BUF_LEN+1],s3[BUF_LEN+1];  memset(s2,0x00,sizeof(s2));memset(s3,0x00,sizeof(s3));  printf

6、("s1=[%s]len=[%d]\n",s1,strlen(s1));  press(s1,s2);  unpress(s2,s3);  printf("s3=[%s],len=[%d]\n",s3,strlen(s3));}  ①输入简单的数字字符,运行结果如图1。  ②输入连续连0的数字字符,运行结果如图2。  从上面可以看出,不管输入任何字符,都可以按照原来的字符进行解压缩出来。  4结束语  本文根据企业的实际需要,研究并实现了对简单报文数据的压缩及解压缩算法,目前已经应用于企业的项目开发中。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。