【发布时间】:2011-02-09 01:01:22
【问题描述】:
在Kademlia protocol 中,节点 ID 是 160 位数字。节点存储在桶中,桶 0 存储除最后一位之外与该节点具有相同 ID 的所有节点,桶 1 存储除最后 2 位之外与该节点具有相同 ID 的所有节点,以此类推为所有 160 个存储桶打开。
找到我应该将新节点放入哪个存储桶的最快方法是什么?
我的存储桶只是存储在一个数组中,需要这样的方法:
Bucket[] buckets; //array with 160 items
public Bucket GetBucket(Int160 myId, Int160 otherId)
{
//some stuff goes here
}
显而易见的方法是从最重要的位开始,逐位比较,直到找到差异,我希望有一个更好的方法,基于聪明的位旋转。
实用说明: 我的 Int160 存储在一个包含 20 项的字节数组中,适合这种结构的解决方案将是首选。
【问题讨论】:
标签: language-agnostic bit-manipulation dht bitfoo