【发布时间】:2019-04-20 17:19:43
【问题描述】:
我见过的所有霍夫曼编码示例都使用字母(A、B、C)作为被编码的字符,它们在其中计算每个字符的频率以生成霍夫曼树。当您要编码的数据是二进制时会发生什么?我见过人们将每个字节视为一个字符,但为什么呢?使用 8 位作为“字符”的截止值似乎是任意的,为什么不使用 16 位呢?为什么 32 位架构不使用 32?
【问题讨论】:
-
可能是因为这些是简化的示例(并且每个人都对 ascii 表有所了解)。我会假设(不确定)例如在放气中,熵编码可能不是按字节计算的。从性能的角度来看,字节对齐(不一定是一个字节)可能是有意义的。 32 位输入也会生成更大的霍夫曼树,必须存储和传输,因此在数据大小方面也需要权衡。