登录
首页 >  Golang >  Go问答

更好地理解 Kademlia 的 XOR 整数度量

来源:stackoverflow

时间:2024-04-01 20:21:31 430浏览 收藏

一分耕耘,一分收获!既然都打开这篇《更好地理解 Kademlia 的 XOR 整数度量》,就坚持看下去,学下去吧!本文主要会给大家讲到等等知识点,如果大家对本文有好的建议或者看到有不足之处,非常欢迎大家积极提出!在后续文章我会继续更新Golang相关的内容,希望对大家都有所帮助!

问题内容

我正在尝试更好地掌握 kademlia 的 xor 距离度量,因此我编写了一个小虚拟程序来尝试更好地理解。我在这里也没有使用 160 位数字作为密钥,而是使用某些用户标识符的 sha256 哈希值。

这是我的异或距离函数。这或多或少是正确的吗?我对每个字节进行异或 - 将其附加到缓冲区 rawbytes 并将该字节缓冲区转换为整数。

func XorDistance(node string, otherNode string) uint64 {
    var rawBytes [32]byte
    for i := 0; i < 32; i++ {
        rawBytes[i] = node[i] ^ otherNode[i]
    }
    distance, _ := binary.Uvarint(rawBytes[:])
    return distance
}

解决方案


这是不正确的,因为

您必须使用 math/big 包才能进行此类使用。这是我对您的代码片段的修改版本:

func xorDistance(node string, otherNode string) *big.Int {
    var rawBytes [32]byte
    for i := 0; i < 32; i++ {
        rawBytes[i] = node[i] ^ otherNode[i]
    }
    return big.NewInt(0).SetBytes(rawBytes[:])
}

以上就是《更好地理解 Kademlia 的 XOR 整数度量》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>