c - 用于散列 ip 片段的散列函数

标签 c algorithm function hash

我必须将传入的 ipv4 片段散列为大小为 20 的静态结构数组。用于散列的字段是 IP-ID(16 位)、协议(protocol)(8 位)、源 IP 地址(32 位)和目标 IP 地址(32 位)。散列应该很快,并且用 C 实现起来不是很复杂。在这种情况下,什么是好的散列函数?

最佳答案

如果我理解正确并且您只需要 20 个可能的哈希值,则可以直接对数据使用模运算符 (%)。

如果您的数据分布是有利的并且您将它们存储为整数,您可以使用 hash = ip_fragment % 20

看来无论如何都会发生很多碰撞,所以您可以保持简单。

关于c - 用于散列 ip 片段的散列函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39787843/

相关文章:

javascript - 有没有一种方法可以递归地删除值为 NULL 或 UNDEFINED 或对象为空的深层属性?

algorithm - 给出很多区间 [ai, bi],找到与最多区间相交的区间

c - x86-64 在寄存器中传递参数的顺序

c - 如何让 do while 循环结束时的 printf 被执行?它只是跳过它

c - C中的段错误,无法找出原因

c - 如何在使用程序集排序后刷新 C 数组

python - 如何在任何给定时间点从给定字符串中找到前 10 个单词。 Python

function - 函数 Haskell 的类型推断

javascript - 在 JavaScript 中使用数组作为名称对输入元素的值进行计数

javascript - 将 JQuery 效果添加到普通 JS 函数