我见过的所有霍夫曼编码示例都使用字母(A,B,C)作为要编码的字符,它们在其中计算每个字符的频率以生成霍夫曼树。当您要编码的数据是二进制数据时,会发生什么?我见过人们把每个字节都当作一个字符,但是为什么呢?使用8位作为“字符”的临界值似乎是任意的,为什么不使用16位呢?为什么不将32位架构用于32位?
答案 0 :(得分:0)
您会意识到Huffman encoding可以使用超过256个符号。 霍夫曼编码的一些实现可以处理超过256个符号,例如
在16位体系结构或32位体系结构的计算机上,ASCII文本文件以及UTF-8文本文件和照片与8位计算机上的几乎相同,因此没有真正的理由切换到其他方法
在16位或32位体系结构上, 通常,机器代码是16位对齐的,因此带有16位符号的静态Huffman可能有意义。
静态霍夫曼的开销是为每个符号传输有关位长的信息,因此接收器可以重建解压缩所需的码字。 8位静态Huffman标头中的257个左右的位长对于“短字符串压缩”而言已经太大了。 正如sascha所指出的那样,将16位用于一个“字符”将需要更多的开销(大约65,000个位长),因此具有16位输入的静态霍夫曼编码仅对那些开销不太重要的长文件有意义。 >