我有99,999位标志,我需要用32位或更少的位来唯一表示。可以设置任何位,我需要知道设置位是否与可比较的位组不同。我正在考虑使用CRC来存储唯一值哈希,但我不确定冲突是否会成为问题。理想情况下,在任何给定时间内都会设置少于500个这些位,但它们不会提前知道。
是否有合适的散列或其他算法来唯一地表示这些位?
答案 0 :(得分:4)
<强> NO! 强>
如果没有关于那些位标志的其他信息来识别某些组合是不可能的,则无法做到这一点。如果所有组合都可以,那么您将需要使用99,999位来存储99,999位标志。
编辑:
根据背景信息,这是为了减少网络使用,并且期望只有大约500个位被设置,有一些技术可以使用,但没有一个是简单的哈希,没有一个是足够有效的以32位存储。我首先看一下Arithmetic Coding。这使用您要发送的字符的概率分布(0.5%1,99.5%0)来压缩数据。通过我的计算,你可以&#34;期待&#34;压缩约22次。但是,对于被认为罕见的信号,您需要通过传输大于起始99,999位的信号来支付价格。