温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C++中怎么实现算术编码

发布时间:2021-07-23 16:35:13 来源:亿速云 阅读:165 作者:Leah 栏目:编程语言

C++中怎么实现算术编码,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

C++算术编码需要输入的是符号,各个符号的概率还有需要编码的符号序列,根据概率可以算出初始编码间隔,先设几个变量在后面可用:High——当前编码的上限,Low——当前编码的下限,high——中间变量,用来计算下一个编码符号的当前间隔的上限,low——中间变量,用来计算下一个编码符号的当前间隔的下限,d——当前间隔之间的距离。

第1个编码符号的当前间隔为其初始的编码间隔,第i个编码符号的当前间隔为第i-1个编码后的[Low,High),第i+1个编码符号的当前间隔算法如下:high=Low+d*第i+1个初始编码符号对应的上限,low=Low+d*第i+1个编码符号对应的下限,然后High=high,Low=low,d=d*第i个编码符号的概率。

编码程序如下:

#include <iostream.h> #define M 100  #define N 4  class suanshu  {   int count,length;  char number[N],n;  long double chance[N],c;  char code[M];  long double High,Low,high,low,d;  public:  suanshu()    {High=0;Low=0;}  void get_number();  void get_code();  void coding();  ~suanshu(){}  };   void suanshu::get_number()  {  cout<<"please input the number and its chance."<<endl;  for(int i=0;i<N;i++)  {    cin>>n>>c;    number[i]=n;    chance[i]=c;  }  if(i==20)    cout<<"the number is full."<<endl;  count=i;  }

看完上述内容,你们掌握C++中怎么实现算术编码的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++
AI