C ++ MurmurHash3: как хешировать целое число

Я запутался с тем, как я должен вызвать 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;

}

0

Решение

Вы проходите key, который является указателем на (const) intтак что вы должны проходить sizeof(int) как длина.

Проход 1 будет работать только в случае int имеет ширину 1 байт на вашей платформе, что редко бывает.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]