我很难找到一种创建块的安全方法,它特别考虑了霍夫曼代码的长度。 是否存在从数据读取的安全字节数,由此产生的霍夫曼码不超过既定长度15,并且压缩不会那么糟糕?规范没有阐明如何实现此条件。
此刻,我正在做的是停止输入编码到一定数量的字节,因为我不知道该如何处理。
欢迎任何帮助。
答案 0 :(得分:0)
不能通过限制要在块中压缩的数据量来限制霍夫曼码的长度。这个限制太短了。相反,如果应用霍夫曼算法导致某些代码的长度超过15位,则对霍夫曼代码进行修改以解决该问题。有关示例,请参见trees.c in zlib。
还可以使用修改后的霍夫曼算法,该算法对最大代码长度有限制。参见A fast algorithm for optimal length-limited Huffman codes。