Я запутался с тем, как я должен вызвать MurmurHash3_x86_128 () с целочисленным значением ключа или это вообще возможно? Код murmurhash3 можно найти https://github.com/aappleby/smhasher/blob/master/src/MurmurHash3.cpp. Определение метода приведено ниже.
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;
}
Вы проходите key
, который является указателем на (const) int
так что вы должны проходить sizeof(int)
как длина.
Проход 1 будет работать только в случае int
имеет ширину 1 байт на вашей платформе, что редко бывает.
Других решений пока нет …