我的问题是关于熵,我读了Niyaz多次发布的描述。我可能仍然没有完全理解这个概念所以我会问我的问题。我有一个.dll文件,我运行了几个测试,其中一个结果是熵值为6.46(未打包)。我很难弄明白这意味着什么,我理解Not Packed部分,但6.46的值我没有,因为我没有看到任何熵值的比例。我可能没有正确地思考这个问题,我非常感谢任何帮助。感谢...
答案 0 :(得分:3)
在这种情况下,熵可能是以每字节数据的熵比特来衡量的。 8是完全随机的,0是完全可预测的。
实际上,这意味着您的DLL文件可能会被压缩到其初始大小的大约80%(6.46 / 8)。
答案 1 :(得分:3)
熵的定义是:
其中:
a
表示文件中的每个可能字符P(A)
- 此字符的概率(等于其出现次数除以文件大小)对数的基数定义了熵的单位。如果它等于2,则以比特为单位测量熵。
熵是衡量不确定性的标准。想象一下由相同字母组成的文件。然后P(a)= 1(因为只有一个字符)并且熵等于:
0位的熵意味着:没有不确定性,完全可预测性。另一方面,想象一个每个字符不同的文件。有256个P值,每个值等于1/256。然后熵等于:
8位熵意味着:完全不确定,没有可预测性。
熵与基于熵的算法的压缩比相关。正如duskwuff所说,6.46位的熵意味着该文件可以通过基于熵的算法压缩到大约原始大小的4/5。