Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 如何将99999位唯一表示为字节、字或双字_Algorithm_Hash_Bits_Crc - Fatal编程技术网

Algorithm 如何将99999位唯一表示为字节、字或双字

Algorithm 如何将99999位唯一表示为字节、字或双字,algorithm,hash,bits,crc,Algorithm,Hash,Bits,Crc,我有99999位的标志,我需要用32位或更少的值唯一地表示。任何一个位都可以设置,我需要知道设置的位是否与可比较的一组位不同。我正在考虑使用CRC来存储唯一值散列,但我不确定冲突是否会成为问题。理想情况下,在任何给定时间设置的这些位都少于500位,但不会提前知道它们 是否有合适的哈希或其他算法来唯一地表示这些位?否 如果没有关于这些位标志的一些其他信息来识别某些组合是不可能的,那么这就无法完成。如果所有组合都可以,则需要使用99999位来存储99999位标志 编辑: 根据背景信息,这是为了减少网

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

是否有合适的哈希或其他算法来唯一地表示这些位?

如果没有关于这些位标志的一些其他信息来识别某些组合是不可能的,那么这就无法完成。如果所有组合都可以,则需要使用99999位来存储99999位标志

编辑:

根据背景信息,这是为了减少网络使用,并且期望仅设置约500位,有一些技术可以使用,但没有一种是简单的散列,也没有一种效率足以存储在32位中。我会先看看。这使用要发送的字符的概率分布(0.5%1,99.5%0)来压缩数据。根据我的计算,你可以“预期”压缩大约22倍。但是,对于被认为是罕见的信号,您将付出代价,需要传输大于起始99999位的信号

如果没有关于这些位标志的一些其他信息来识别某些组合是不可能的,那么这就无法完成。如果所有组合都可以,则需要使用99999位来存储99999位标志

编辑:



根据背景信息,这是为了减少网络使用,并且期望仅设置约500位,有一些技术可以使用,但没有一种是简单的散列,也没有一种效率足以存储在32位中。我会先看看。这使用要发送的字符的概率分布(0.5%1,99.5%0)来压缩数据。根据我的计算,你可以“预期”压缩大约22倍。但是,对于被认为是罕见的信号,您将付出代价,需要传输大于起始99999位的信号

你所要求的是做不到的。看,我已经存储了所有99999位。这是在两个不同的系统上完成的。我不需要能够从代表值重新组合位(反转散列)。我只需要能够比较两个代表性的值,以确定两组完整位是否相等。同时考虑无损压缩。当大多数位设置为零时,压缩应该相当有效。这可能需要更改表示整个位集所需的存储量的先决条件。您有2^99999个可能的组合,希望以2^32位唯一表示。你打算如何解决碰撞?我理解碰撞的问题。我希望找到一种解决方案,包括碰撞,但在比较两组位是否相等时,得出合理结论的概率很低。应该说明或提供澄清。你所要求的不能做。看,我已经存储了所有99999位。这是在两个不同的系统上完成的。我不需要能够从代表值重新组合位(反转散列)。我只需要能够比较两个代表性的值,以确定两组完整位是否相等。同时考虑无损压缩。当大多数位设置为零时,压缩应该相当有效。这可能需要更改表示整个位集所需的存储量的先决条件。您有2^99999个可能的组合,希望以2^32位唯一表示。你打算如何解决碰撞?我理解碰撞的问题。我希望找到一种解决方案,包括碰撞,但在比较两组位是否相等时,得出合理结论的概率很低。本应说明或提供澄清。见对问题的评论。所有位都被存储。只需要比较两个集合是否相等,这没关系。任何占用99999位并提供32位的哈希都会将数百万位组合映射到同一个数字。你想通过这样做实现什么?我们也许可以提供一个没有这个散列的替代解决方案。我试图避免通过网络发送所有99999位。只发送代表性值进行比较,以查看是否需要进行同步。如上所述,我愿意使用压缩来简单地减少发送的比特数。这改变了代表值大小的原始要求。我愿意接受碰撞,如果概率足够低,两个集合可以合理地代表同一集合。由于变化是递增的,“数百万位组合”完全是轻描淡写的说法。假设可能的标志设置分布均匀,每个散列可以代表大约10^10000个可能的标志集。@seb考虑到这是用来检查重新同步的,这是个坏主意。如果哈希相同,则发送整个填充以运行完全检查;如果没有,则发送整个填充以进行重新同步。它所做的只是将散列添加到必须发送的内容中。请参阅对问题的评论。所有位都被存储。只需要比较两个集合是否相等,这没关系。任何占用99999位并提供32位的哈希都会将数百万位组合映射到同一个数字。你想通过这样做实现什么?我们也许可以提供一个没有这个散列的替代解决方案。我试图避免通过网络发送所有99999位。T