c语言编写算术编码,算术编码用c语言实现.docx

算术编码用c语言实现

算术编码用c语言实现?(2010-07-07 23:43:59)转载标签:?杂谈描述:在source1.dat文件中有100个数据,其中,0的概率为1/8,1的概率为7/8.用算术编码进行压缩。程序如下://============================================================================// Name????????: suanshcoding.cpp// Author??????: 朗月清风// Version?????:1.0// Copyright???: All rights Reserved by 2010// Description : 从source1.dat文件中读取信息,即100个0、1码,完成算术编码,并给//???????????????出了译码及验证。// Department??:upc//============================================================================#include#include#define max 100void main(){?FILE *fp;?int i=0;?int n;?long double high;//上限?long double low;//下限?long double d;//间距?long double buf[max]; //大数组,暂存读取的数据?long double decode[max]; //存解码后的结果?int code[55];??//编码结果?long double temp;?long double hx;//总信息量?long double tp;//从区间取数?long double x=0.0; //存恢复的小数?long double line;//解码时判断准线//?char ch;??if((fp=fopen("f:\\source1.dat","r"))==NULL)?{??printf("open erro!\n");??//exit(0);?}?else?{?while (!feof(fp))?{??fscanf(fp,"%lf",&temp);??buf[i]=temp;????//?printf("%d--%lf\n",i,buf[i]);??i++;?}?}?//for(i=0;i1.0)??{???tp=tp-1;???code[j]=1;??}??else???code[j]=0;?}?printf("编码为:\n");//输出编码?for(i=0;ilow)&&(xline)??{???decode[i]=1.0;???low+=d*p0;??}??else??{???decode[i]=0.0;???high=low+d*p0;??//?d=high-low;??}??d=high-

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值