【发布时间】:2025-12-26 13:20:12
【问题描述】:
我希望这对 SO 来说不是太固执己见;它可能没有一个好的答案。
在我正在编写的库的一部分中,我有一个字节数组,其中填充了用户提供的值。这些值可能是 Float、Double、Int(不同大小)等类型,具有您可能期望 C 中的二进制表示,例如。这就是我们可以说的关于价值观的全部内容。
我有机会进行优化:我可以用字节MAGIC 初始化我的字节数组,然后只要用户提供的值的没有字节 等于MAGIC,我就可以走快路,否则我需要走慢路。
所以我的问题是:什么是选择我的魔法字节的原则方法,这样它就有可能不会出现在我收到的(各种编码和分布的)数据中?
我想,我的部分问题是,是否有类似 Benford's law 的东西可以告诉我有关字节在多种数据中的分布情况。
【问题讨论】:
-
查看您拥有的各种编码和分布的数据并选择最不频繁的字节?如果您还没有任何数据,请让您的魔术字节变量并重新编写您的程序,以便根据您接收到的数据中最不频繁的字节每隔一段时间重新选择魔术字节?此外,幻数的长度通常超过 8 位,以增加唯一性的概率。
标签: language-agnostic byte probability magic-numbers