给字符串散列有哪些优秀的散列函数?
2023-04-21 阅读 56
有很多优秀的字符串散列函数,以下是其中一些:
1. DJB2:这是一种简单但广泛使用的散列函数,它是由Daniel J. Bernstein设计的。它使用一个常数33,然后按照以下方式计算散列值:hash = hash * 33 + char。其中,char是字符串中的每个字符。
2. FNV:FNV是一种快速非常好的散列函数,它使用FNV算法。它使用两个常数FNV_PRIME和FNV_OFFSET_BASIS,然后按照以下方式计算散列值:hash = FNV_OFFSET_BASIS for each byte_of_data to be hashed hash = hash × FNV_PRIME hash = hash XOR byte_of_data
3. MurmurHash:MurmurHash是一种高速散列函数,它由Austin Appleby设计。它使用两个常数M和R,然后按照以下方式计算散列值:hash = seed for each chunk of 4 bytes of data to be hashed hash = ((hash XOR chunk) × M) XOR (hash >> R)
4. CityHash:CityHash是一种高速散列函数,它由Google设计。它使用三个常数k0、k1和k2,然后按照以下方式计算散列值:hash = CityHash64WithSeed(s, len, k0, k1)。其中,s是字符串,len是字符串长度。
这些散列函数都具有良好的分布性和高速性,可以用于各种字符串散列场景。
更新于 2023年04月24日