我希望这对SO来说不是太固执己见;它可能没有一个好的答案。
在我正在编写的库的一部分中,我有一个字节数组,其中填充了用户提供的值。这些值可能是浮点型、双精度型、Int (不同大小)等类型,例如,您可能期望从 C 中获得二进制表示形式。这就是我们能说的关于价值观的全部内容。
我有机会进行优化:我可以用字节MAGIC
初始化我的字节数组,然后只要用户提供的值没有一个字节等于MAGIC
我就可以采用快速路径,否则我需要采用慢速路径。
所以我的问题是:选择我的魔术字节的原则方法是什么,这样它就很有可能不会出现在我收到的(各种编码和分布式)数据中?
我想,我的部分问题是,是否有像本福德定律这样的东西可以告诉我一些关于字节在多种数据中的分布。
从库应用程序将使用的各种输入中捕获真实世界的数据。
编写一个快速而脏的程序来分析数据集。听起来您想知道的是哪些字节最常被完全排除。因此,程序的输出会说,对于每个字节值,有多少输入不包含它。
这与最不常用字节不同。在数据分析中,您需要注意准确注意您正在测量的内容!
使用分析来定义体系结构。如果没有字节从未出现,则可以完全放弃优化。
我倾向于使用字节 255,但我发现这在 MSWord 文件中也很普遍。所以我现在使用字节 254,让 EOF 代码终止文件。