【问题标题】:C++ MurmurHash3 : how to hash integerC++ MurmurHash3:如何散列整数
【发布时间】:2016-11-20 10:10:45
【问题描述】:

我对如何使用整数键值调用 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;

}

【问题讨论】:

  • 传递sizeof(int) 作为长度。

标签: c++ hash murmurhash


【解决方案1】:

你正在传递key,它是一个指向(const)int的指针,所以你应该传递sizeof(int)作为长度。

仅当int 在您的平台上为 1 字节宽时才可以传递 1,这种情况很少见。

【讨论】:

  • 传递 1,2,3 ....100 个值都有效。它没有抛出任何错误。
  • @rombi 是否产生了预期的结果?我敢打赌会发生未定义的行为。
猜你喜欢
  • 1970-01-01
  • 2010-10-14
  • 2020-01-07
  • 1970-01-01
  • 2010-12-21
  • 2013-04-11
  • 1970-01-01
  • 2013-06-25
  • 2011-01-15
相关资源
最近更新 更多