在 Kademlia协议中,节点ID是160位数字。 节点存储在存储桶中,桶0存储与此节点具有相同ID的所有节点,除了最后一位,桶1存储与此节点具有相同ID的所有节点,除了最后2位,对于所有160个桶都是如此。
找到将新节点放入哪个存储桶的最快方法是什么?
我只需将我的桶简单地存储在数组中,并需要一个方法,如下所示:
明显的方法是从最高有效位开始逐位比较,直到找到差异。我希望有一种基于聪明的位操作的更好的方法。
实用提示: 我的Int160存储在一个具有20个项目的字节数组中,对这种结构有效的解决方案将被优先考虑。
找到将新节点放入哪个存储桶的最快方法是什么?
我只需将我的桶简单地存储在数组中,并需要一个方法,如下所示:
Bucket[] buckets; //array with 160 items
public Bucket GetBucket(Int160 myId, Int160 otherId)
{
//some stuff goes here
}
明显的方法是从最高有效位开始逐位比较,直到找到差异。我希望有一种基于聪明的位操作的更好的方法。
实用提示: 我的Int160存储在一个具有20个项目的字节数组中,对这种结构有效的解决方案将被优先考虑。