我有99999位标志,我需要用32位或更少的唯一表示。任何一个位元都可以设定,我需要知道设定的位元是否与一组可比较的位元不同我正在考虑使用CRC来存储一个唯一的值散列,但我不确定冲突是否会是一个问题理想情况下,在任何给定时间设置的这些位都少于500个,但不会提前知道。
是否有合适的散列或其他算法来唯一地表示这些位?

最佳答案

不!
如果没有关于这些位标志的一些其他信息来标识某些组合是不可能的,那么这是不可能的如果所有组合都可行,则需要使用99999位来存储99999位标志。
编辑:
根据背景信息,这是为了减少网络使用,并且期望仅设置约500个位,有一些技术可以使用,但没有一个是简单的散列,也没有一个足够有效地存储在32位中。我会先看看Arithmetic Coding。这将使用要发送的字符的概率分布(0.5%1,99.5%0)来压缩数据根据我的计算,你可以“期望”压缩大约22倍。但是,对于那些被认为是罕见的信号,你需要发送一个比你的起始99999位还大的信号来付出代价。

关于algorithm - 如何将99,999位唯一表示为字节,字或双字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26715853/

10-08 22:37