2016-11-20 67 views
0

我很困惑我應該如何與整數鍵值調用MurmurHash3_x86_128()或它甚至可能嗎? murmurhash3代碼可以在https://github.com/aappleby/smhasher/blob/master/src/MurmurHash3.cpp找到。方法定義如下。C++ MurmurHash3:如何散列整數

void MurmurHash3_x86_128 (const void * key, const int len, 
        uint32_t seed, void * out) 

我使用len作爲1散列整數值。這是正確還是錯誤?

int main() 
{ 
uint64_t seed = 100; 
int p = 500; // key to hash 

uint64_t hash_otpt[2]= {0}; 

const int *key = &p; 
MurmurHash3_x64_128(key, 1, seed, hash_otpt); // 0xb6d99cf8 
cout << *hash_otpt << endl; 

} 
+1

傳遞'sizeof(int)'作爲長度。 – Banex

回答

0

你傳入key,這是一個指針(常量)int,所以你應該通過sizeof(int)的長度。

傳遞1只會在你的平臺上有1字節寬的情況下工作,這種情況很少見。

+0

傳遞1,2,3 .... 100的值全部正常。它沒有拋出任何錯誤。 – rombi

+0

@rombi是否會產生預期的結果?我敢打賭,存在未定義的行爲。 – Banex