哈希算法将特定数量的数字放入固定数量的桶中
Hash algorithm to put a specific number of digits into a fixed number of buckets
我想将 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 中的一个包?
最简单的方法是简单地使用 mod
以 10 为基数
base_var_value % 16777215
那个16M的数字就是十六进制的FF FF FF
。
我想将 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 中的一个包?
最简单的方法是简单地使用 mod
以 10 为基数
base_var_value % 16777215
那个16M的数字就是十六进制的FF FF FF
。