guint g_str_hash (gconstpointer v)
{
const signed char *p;
guint32 h = 5381;
for (p = v; *p != '\0'; p++)
h = (h << 5) + h + *p;
return h;
}
啥意思暂时还没搞明白,先记录着,以后应该会用得到。抄录与 glib的ghash.c中。
按照函数注释的说法是,此算法的名称为djb hash ,是一个将字符串转换为hash值得算法,如果字符串的长度为2的话,容易产生冲突。
有兴趣的朋友可以查找相关资料。
本文解析了glib库中的guint32 g_str_hash()函数,它是djbhash算法的具体实现,用于将字符串转换为哈希值,特别提及了长度为2字符串可能产生的冲突问题。适合对哈希函数感兴趣的开发者参考。
675

被折叠的 条评论
为什么被折叠?



