首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >作为整数的Kademlia XOR距离

作为整数的Kademlia XOR距离
EN

Stack Overflow用户
提问于 2018-11-04 05:59:40
回答 1查看 195关注 0票数 1

在Kademlia论文中,它提到使用解释为整数的XORNodeID。让我们假设我的NodeID1aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d,我的NodeID2ab4d8d2a5f480a137067da17100271cd176607a1。如何正确地将其解释为用于比较NodeID1NodeID2的整数?我会把这些转换成BigIntXOR这两个BigInt吗?我在一个实现中看到了这一点。我也能把每个NodeID转换成十进制和XOR值吗?

我找到了this问题,但我正在努力更好地理解这是如何工作的。

注意:这不是为了实现,我只是想了解整数解释是如何工作的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-05 19:26:54

对于基本的kademlia实现,您只需要对ID进行2位算术操作: xor和比较。对于这两种情况,ID概念上是一个160位无符号整数,溢出,即模2^160算术。它可以分解为一个20字节或5×u32数组,假设在后一种情况下正确的endianness转换。网络协议最常见的特性是大端,所以字节0将包含160中最重要的8位。

然后,xor或比较可以通过子单元在子单元上应用。也就是说,xor只是所有字节的xor,比较是二进制数组比较。

使用bigint库函数可能足以实现,但不是最优的,因为与在固定大小的数组上实现必要的位旋转相比,它们具有大小和信令开销。

更完整的实现可能还需要一些额外的算术和实用函数。

我也能把每个NodeID转换成十进制和XOR值吗?

考虑数字的大小,十进制表示不是特别有用。对于人类读者来说,heaxadecimal或单个位更有用,计算机使用二进制操作,几乎从不使用十进制。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53138176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档