【发布时间】:2010-12-07 11:23:05
【问题描述】:
djb2 algorithm 有一个字符串哈希函数。
unsigned long hash = 5381;
int c;
while (c = *str++)
hash = ((hash << 5) + hash) + c; /* hash * 33 + c */
为什么 5381 和 33 如此重要?
【问题讨论】:
-
DJB2 在雪崩方面很糟糕。例如,它为这些字符串返回相同的哈希值:
xy、yX、z7。有better alternatives。
标签: hash