我想将 10 个基数 10 位数字(0 到 9,999,999,999)填充到 6 个十六进制数字(00 00 00 到 FF FF FF)中。我知道会有碰撞,那没关系。我也不需要担心单独的链来容纳冲突。此外,我不需要从哈希值转换回原始值。只需要拥有一组可以表示为 00 00 00 到 FF FF FF 的桶(3 个字节中的 6 个十六进制数字)。所以是的,0 到 9,999,999,999 之间会有很多数字映射到这些存储桶......这很好。
有谁知道有一个好的算法可以做到这一点,或者可能有 Java/Kotlin 中的包吗?
最佳答案
最简单的方法是对以 10 为基数的数字使用 mod
base_var_value % 16777215
这个 16M 数字就是十六进制的 FF FF FF
。
关于java - 哈希算法将特定数量的数字放入固定数量的桶中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54913892/