1

这是算法所说的。

hash = FNV_offset_basis
for each octet_of_data to be hashed
    hash = hash * FNV_prime
    hash = hash XOR octet_of_data
return hash

但是如果我有一组字符串,那么我应该将什么作为 FNV_offset_basis,

以及要散列的每个八位字节数据的含义是什么。

还有表的大小应该是多少,比如说有 N 个要散列的字符串。

请帮助我修改字符串。

谢谢。

4

1 回答 1

3

从上面评论中引用的网站,

32 bit offset_basis = 2166136261

64 bit offset_basis = 14695981039346656037

使用与散列宽度对应的那个。

八位字节是一个 8 位字节。如果您使用的是 8 位字符的文本,则八位字节和字符是一回事。

桌子的大小由您决定;当然一定要让它大于N!它越大,您应该期望的碰撞越少。

于 2012-02-21T23:19:25.387 回答