FNV用于C中的字符串散列

时间:2012-02-21 21:52:35

标签: c hash fnv

这是算法所说的内容。

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个字符串要进行哈希处理。

请帮助我修改字符串。

感谢。

1 个答案:

答案 0 :(得分:1)

从上面评论中引用的网站

32 bit offset_basis = 2166136261

64 bit offset_basis = 14695981039346656037

使用与哈希宽度相对应的那个。

八位字节是一个8位字节。如果您使用的是带有8位字符的文本,则八位字节和一个字符是相同的。

桌子的大小取决于你;当然要确保它大于N!它越大,你应该预期的碰撞就越少。