在Kademlia protocol節點ID是160位數字。節點存儲在桶中,桶0存儲與該節點具有相同ID的所有節點,除了最後一位之外,桶1存儲與該節點具有相同ID的除最後2位之外的所有節點,所以在所有160個桶上。找到正確的kademlia桶的最簡單的方法
什麼是最快的方法來找到哪個桶我應該把一個新的節點?
我有我的水桶簡單地存儲在陣列中,並且需要像這樣的方法:
Bucket[] buckets; //array with 160 items
public Bucket GetBucket(Int160 myId, Int160 otherId)
{
//some stuff goes here
}
最明顯的方法是從最顯著位下工作,通過位比較位,直到我找到一個差異,我希望有一個更好的方法圍繞聰明的位置旋轉。
實用說明: 我的Int160存儲在一個包含20個項目的字節數組中,這種結構的解決方案將會是首選。
字節似乎是最自然的事情,正如你所說的,整數可能會更快 – Martin 2010-04-17 02:57:07