亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

更好地理解 Kademlia 的 XOR Integer Metric

更好地理解 Kademlia 的 XOR Integer Metric

Go
撒科打諢 2023-05-08 14:36:02
我試圖更好地掌握 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}
查看完整描述

1 回答

?
交互式愛情

TA貢獻1712條經驗 獲得超3個贊

這是不正確的,因為

  • binary.Uvarint()只能解碼64位以內的數字,而你的rawBytes是256位

  • “varint”編碼基本上與原始字節不兼容。

你必須使用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[:])

}


查看完整回答
反對 回復 2023-05-08
  • 1 回答
  • 0 關注
  • 118 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號