我正在压缩8位字节,只有在数据上找到的唯一单字节数为128或更少时,算法才有效。
我采用所有独特的字节。在开始时,我存储一个包含每个唯一字节一次的表。如果它们是120,我存储120个字节。
然后,我不是将每个项目存储在8位的空间中,而是将每个项目一个接一个地存储在7位中。这7位包含项目在桌面上的位置。
问题:如何通过在代码中存储可能的表格来避免在开始时存储这120个字节
答案 0 :(得分:3)
您正在尝试做的是霍夫曼编码的特殊情况,其中您只考虑唯一字节而不是它们的频率因此给每个字节定长码但您可以更好地使用它们的频率给它们变量长度代码使用霍夫曼编码并获得更多压缩。
但是如果你打算使用相同的算法,那么请考虑这种方式: -
不存储120字节存储256位(32字节),其中1表示是否存在值 因为它会给你所有信息。您使用bit来获取值 在文件中找到并再次构造映射表
答案 1 :(得分:1)
我不知道确切的算法,但可能压缩算法的想法是你不能。它必须存储这些值,因此它可以为数据中的所有其他字节写一个快捷方式。
有一种方法可以避免写入120个字节:事先知道这些字节的内容。例如,当您知道要发送的内容时,只会包含这些字节。然后你可以简单地让表格在两边都知道,并且只存储120字节以外的所有内容。