python面向对象实现算术编码
算术编码:
①原理: 将待编码的数据序列用[0, 1)之间的一个小数来表示,数据序列越长,小数点后的位数就越多,所需的二进制位数也就越多。
②编码过程:
{ S t a r t N = S t a r t B + L e f t C × L E n d N = S t a r t B + R i g h t C × L \left\{ \begin{array}{l} Star{t_N} = Star{t_B} + Lef{t_C}{\rm{ \times }}L\\ En{d_N} = Star{t_B} + Righ{t_C}{\rm{ \times }}L \end{array} \right. {
StartN=StartB+LeftC×LEndN=StartB+RightC×L
下 标 N : 新 的 ( N E W ) 、 B : 前 一 个 ( B E F O R E ) 、 C : 当 前 的 ( C U R R E N T ) 。 下标N:新的(NEW)、B:前一个(BEFORE)、C:当前的(CURRENT)。 下标N:新的(NEW)、B:前一个(BEFORE)、C:当前的(CUR