算术编码实现输出字符

问题描述 投票:0回答:1

我正在查看 https://www.codeabbey.com/index/task_view/adaptive-arithmetic-coding

上的算术编码实现

我的理解是,当您使用浮点精度时,压缩结果将是一些浮点值。但是,当使用整数和移位的无限精度时,我认为输出是二进制值。在上面的链接中,有一个函数

def remove_first_digit(v):     # returns truncated value and digit which was truncated
    d = v // tail
    v %= tail
    return v, d

d
附加到
output
,这是压缩结果。然而
d
这里是一个
char
。我不太明白这个实现是如何工作的。为什么这里会发生向 char 的转换?

encoding compression entropy
1个回答
0
投票

这里

d
不是“char”。它是一个以 27 为基数的数字,即 0..26 范围内的整数。
code_to_char()
然后将数字转换为大写字母或句点以写出。

这不是产生二进制输出的算术编码器。它是一个算术编码器,可生成由这 27 个字符组成的输出。

发生的情况是,

low
high
值的高位数字相等,因此该数字被写出,然后从
low
high
值中删除。然后新的数字被移入
low
high
- 0 位数字移入
low
,26 位数字移入
high

© www.soinside.com 2019 - 2024. All rights reserved.