算术编码用c语言实现

算术编码用c语言实现

ID:16078201

大小:109.28 KB

页数:5页

时间:2018-08-07

算术编码用c语言实现_第1页
算术编码用c语言实现_第2页
算术编码用c语言实现_第3页
算术编码用c语言实现_第4页
算术编码用c语言实现_第5页
资源描述:

《算术编码用c语言实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、算术编码用c语言实现 (2010-07-0723:43:59)转载标签: 杂谈描述:在source1.dat文件中有100个数据,其中,0的概率为1/8,1的概率为7/8.用算术编码进行压缩。程序如下://============================================================================//Name        :suanshcoding.cpp//Author      :朗月清风//Version     :1.0//Copyright   :Allrigh

2、tsReservedby2010//Description:从source1.dat文件中读取信息,即100个0、1码,完成算术编码,并给//               出了译码及验证。//Department  :upc//============================================================================#include#include#definemax100voidmain(){ FILE*fp; inti=0; intn

3、; longdoublehigh;//上限 longdoublelow;//下限 longdoubled;//间距 longdoublebuf[max];//大数组,暂存读取的数据 longdoubledecode[max];//存解码后的结果 intcode[55];  //编码结果 longdoubletemp; longdoublehx;//总信息量 longdoubletp;//从区间取数 longdoublex=0.0;//存恢复的小数 longdoubleline;//解码时判断准线// charch;  if((fp=

4、fopen("f:\source1.dat","r"))==NULL) {  printf("openerro!");  //exit(0); } else { while(!feof(fp)) {  fscanf(fp,"%lf",&temp);  buf[i]=temp;    // printf("%d--%lf",i,buf[i]);  i++; } } //for(i=0;i

5、0/8;//1的概率 low=0.0; high=1.0; d=1.0; for(i=0;i

6、x+1; //需编码位数 printf("至少需要%d位编码",n); printf("下限是:%.17f下限是:%.17f",low,high);tp=(low+high)/2.0;//取区间的中点编码printf("选取的小数为:%.17f",tp); for(intj=0;j1.0)  {   tp=tp-1;   code[j]=1;  }  else   code[j]=0; } printf("编码为:");//输出编码 for(i=0;i

7、++) {  printf("%d",code[i]);  x+=code[i]*pow(2,(-i-1)); }  printf("恢复的小数为:%.17f",x);  if((x>low)&&(xline)  {   decode[i]=1.0;   low+=d*p0;  }  else  {

8、   decode[i]=0.0;   high=low+d*p0;  // d=high-low;  }  d=high-low;  line=low+d*p0; } printf("原始输入数据:"); for(i=0;i

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

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

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