4

我对应该为函数len中的参数提供什么值感到困惑MurmurHash3_x86_128()(也有类似的函数)。murmurhash3 代码可以在这里找到。

如果您的回答是密钥长度,请在第 154 行解释代码。

4

1 回答 1

4

大部分肯定是要散列的数据长度(以字节为单位),第 154 行的代码:

const int nblocks = len / 16;

将此长度划分为 128 位块(或每个 16 字节),这是为了促进更快的散列,因为MurmurHash3_x86_128()每次迭代处理和混合 16 字节(4 x uint32)。

你会在第 205 行注意到:

switch(len & 15)

如果大小不是 16 的倍数,这将捕获任何试用字节,并且 switch 案例将它们组合到最终哈希中。

于 2012-06-15T06:55:23.000 回答