我需要根据IP地址和端口号计算的哈希值。我找到了以下示例,通过跟踪,我可以看到它返回一个三位数的哈希值,这对我很好。 但是,我想知道更多细节会发生什么,我很难搞清楚。
以下是代码段:
((addr.s_addr ^ (addr.s_addr>>8)^ntohs(port) & 255);
addr.s_addr是无符号长整型(32位)。 端口是无符号短(16位)。
IP地址值192.168.50.70,端口号60049返回哈希值249(使用%d打印时)。
任何人都可以帮我理解操作实际上做了什么吗? :)
谢谢。
亲切的问候 安德烈亚斯
答案 0 :(得分:0)
这并不是什么大问题:XORs(^)adds.s_addr本身向右移动了8个空格;然后使用端口号对它进行xors,最后将整个事物与255进行AND运算,将其限制为8个字节。