





















经过pangwa大哥的指点,对于这个问题终于有点明白了。
其实__h = __h * 5 + *(__s++)只是一种实现string到long转换的方式而已。
在php中,就是用了一下方法转换string:
static unsigned long hashpjw(char *arKey, unsigned int nKeyLength)
{
unsigned long h = 0, g;
char *arEnd=arKey+nKeyLength;
while (arKey < arEnd) {
h = (h << 4) + *arKey++;
if ((g = (h & 0xF0000000))) {
h = h ^ (g >> 24);
h = h ^ g;
}
}
return h;
}
参考文章:http://blog.iyi.cn/tech/2005/11/post_2.html
感谢:pangwa大哥
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。