2
我需要根据IP地址和端口号计算出来的散列值。我发现了下面的例子,通过跟踪,我可以看到它返回一个三位数的散列值,这对我来说很好。 但是,我想知道发生了什么更详细的一点,我很难搞清楚。按位操作解剖
这里是代码片段:
((addr.s_addr^(addr.s_addr>>8)^ntohs(port) & 255);
addr.s_addr是一个无符号长(32位)。 端口无符号短(16位)。
IP地址值192.168.50.70和端口号60049返回散列值249(当打印出%d时)。
任何人都可以帮助我理解操作实际上做了什么? :)
谢谢。
亲切的问候 安德烈亚斯
......这实际上是非常糟糕的:只有最右边的16位IP地址参与哈希(如果地址限制为192.168.xy,这很好),并且只有portnum的8个最右边的位参与散列值。但它可能**对于特定的应用程序足够好。 – wildplasser
嗯,对于一个256桶的哈希映射可能足够了;尽管该方法可能会使用一些改进。 –