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桶的哈希映射可能足夠了;儘管該方法可能會使用一些改進。 –