当所有字符都具有相似的重复时,使用霍夫曼编码压缩文件吗?

时间:2018-11-09 18:24:27

标签: java huffman-code

因此,我一直在对一堆不同类型的文件(.jpg,.txt,.docx)实施霍夫曼压缩,而且我注意到很多时候,有时压缩文件与原始文件几乎相同(例如:251,339kb-> 250,917kb(无标题!))我很确定我的代码是可靠的,尽管我不确定这是否正确。我注意到的是字符频率非常相似,例如,我将拥有10个字符,例如全部具有65个重复,然后再有10个字符具有66个重复,然后再有10个字符具有67个重复。由于文件很大,压缩的字符表示代码最终将具有与原始大小相同的大小,甚至更大(9位)。使用huffman压缩时这是正常现象吗?

1 个答案:

答案 0 :(得分:0)

使用霍夫曼编码时,将文件分成多个小块。这个想法是,较小的块将比平均所有内容的巨型文件具有更大的偏见。例如,一个块中可能有很多0x00。另一个块可能具有0xFF,依此类推。然后,使用霍夫曼算法压缩每个块,将利用这些偏差获得优势。当然,如果块太小,则霍夫曼代码表将占压缩块的很大一部分,您将失去分块的好处。在Deflate情况下,代码表的顺序为50-100字节。

当然,正如其他受访者评论的那样,如果您的源文件已被压缩(JPEG等),则您将找不到任何偏差或冗余,但是将其分块。