c - 将 IP 地址映射到数组索引

标签 c arrays algorithm data-structures

我正在寻找一种将 IP 地址映射到数组中的索引的好方法。假设我有一个 32 大小的数组,我们可以从用户输入获得的最大可能 IP 地址将始终 <= 32。我想将此 IP 地址映射到数组中的某个索引位置,然后使用此索引位置来引用这个IP地址。

执行此操作的最佳技术是什么? IP 地址本质上只是一个整数。如果两个地址映射到相同的索引位置,也需要处理冲突。

ip1 => 转换为某个整数,比如 i1 => 索引现在只是 i1 % 32

任何适合此用例的哈希技术来转换 IP 地址也将很有用。

感谢您的帮助。

最佳答案

您是否期望针对您的问题提供任何哈希算法引用?

因为数组大小为 32。

您可以仅使用 IP 地址中设置的位数来索引数组位置。但是所有 0 和所有 1 都不是已使用的地址,因此您会丢失 2 个位置。 您可以使用所有半字节的总和进行检查,忽略散列的进位位。您可以根据数组大小增加添加的位数。

您还可以仅将哈希值基于 IP 地址的 2 个字节,因为单个子网中的高阶字节可能相同。

对于冲突的情况,您需要有一个指针数组而不是一维数组,以便您可以使用相同的哈希存储多个地址。

关于c - 将 IP 地址映射到数组索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33072864/

相关文章:

c - While 循环中表达式的双括号

java - 在改造中发送仅包含字符串的 JSONArray

arrays - 确定数组中的元素数

c++ - 如何使用OpenCV和PCL在2D平面上投影红外图像

python - 将 BST 转换为排序列表

algorithm - 有没有big O和big theta不同的算法?

c - 错误: called object is not a function or function pointer double

c++ - 快速时间函数 C/C++

c - 如何在 C 中构建字符串数组

c - 动态结构中的不同数组,创建,写入,读取