【发布时间】:2011-10-09 00:32:09
【问题描述】:
我正在使用 Python-2.6。我对哈希函数知之甚少。
我想使用 CRC 散列函数将 IP 地址(如“128.0.0.5”)散列到范围 [0, H) 中。目前我正在考虑做
zlib.crc32('128.0.0.5')%H.
这样好吗?有几个问题。你可以试着回答...
它会产生任何差异吗?如果我散列 '128.0.0.5' 或其二进制 '0001110101010..' 无论是或没有 '.'s
zlib.crc32 返回一个有符号整数。修改(%)是否否定。带有正 H 的总是给出 pos no?
H 的 %-ing 会影响散列函数的好坏吗? (我的意思是我可以为可用空间做的最好的事情,使用可用的 xlib.crc32)
谢谢!
【问题讨论】:
-
H 有多大,你想如何处理碰撞?
-
IP 地址已经是一个无符号的 32 位整数。你到底想用这个实现什么?
-
我正在散列,因为我不想使用 32 位来存储 IP 地址,而只是 log(H, 2),我将对散列做更多的事情值,我希望它们是随机的。 H 将使用少于 32 位,大约 8 或 10 位。
标签: python ip-address hash zlib crc32