第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

更好地理解 Kademlia 的 XOR Integer Metric

更好地理解 Kademlia 的 XOR Integer Metric

Go
撒科打諢 2023-05-08 14:36:02
我試圖更好地掌握 Kademlia 的 XOR 距離度量,因此我編寫了一個小的虛擬程序來嘗試更好地理解。我在這里也沒有使用 160 位數(shù)字作為我的密鑰,而是使用某個用戶標識符的 sha256 哈希。這是我的異或距離函數(shù)。這或多或少是正確的嗎?我對每個字節(jié)進行異或運算——將其附加到緩沖區(qū)rawBytes并將該字節(jié)緩沖區(qū)轉(zhuǎn)換為整數(shù)。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條經(jīng)驗 獲得超3個贊

這是不正確的,因為

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

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

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

}


查看完整回答
反對 回復(fù) 2023-05-08
  • 1 回答
  • 0 關(guān)注
  • 125 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號