我正在使用 Python-2.6。我对哈希函数知之甚少。
我想使用 CRC 散列函数将像“128.0.0.5”这样的 IP 地址散列到 [0, H) 范围内。目前我正在考虑做
zlib.crc32('128.0.0.5')%H.
这样可以吗?有几个问题。你可以试着回答...
它有什么不同吗?如果我对“128.0.0.5”或其二进制文件“0001110101010..”进行哈希运算,无论是否包含“.”
zlib.crc32 返回一个带符号的整数。 retrofit (%) 是否定的。正 H 总是给出 pos 号?
H 的 %-ing 会影响散列函数的好坏吗? (我的意思是,在可用的 xlib.crc32 的情况下,我能做的最好的事情)
谢谢!
为什么要将 IP 地址散列为数字?他们已经有了一个本地整数表示。例如,使用 netaddr :
>>> import netaddr
>>> ip = netaddr.IPAddress('192.168.1.1')
>>> ip.value
3232235777
>>> netaddr.IPAddress(3232235777)
IPAddress('192.168.1.1')
我是一名优秀的程序员,十分优秀!