常用的几个字符串Hash函数
发布日期:2021-07-18 15:07:54
浏览次数:18
分类:技术文章
本文共 2066 字,大约阅读时间需要 6 分钟。
// RS Hash Function unsigned int RSHash (char *str) { unsigned int b = 378551; unsigned int a = 63689; unsigned int hash = 0; while (*str) { hash = hash * a + (*str++); a *= b; } return (hash & 0x7FFFFFFF); } // JS Hash Function unsigned int JSHash (char *str) { unsigned int hash = 1315423911; while (*str) { hash ^= ((hash << 5) + (*str++) + (hash >> 2)); } return (hash & 0x7FFFFFFF); } // P. J. Weinberger Hash Function unsigned int PJWHash (char *str) { unsigned int BitsInUnignedInt = (unsigned int) (sizeof (unsigned int) * 8); unsigned int ThreeQuarters = (unsigned int) ((BitsInUnignedInt * 3) / 4); unsigned int OneEighth = (unsigned int) (BitsInUnignedInt / 8); unsigned int HighBits = (unsigned int) (0xFFFFFFFF) << (BitsInUnignedInt - OneEighth); unsigned int hash = 0; unsigned int test = 0; while (*str) { hash = (hash << OneEighth) + (*str++); if ((test = hash & HighBits) != 0) { hash = ((hash ^ (test >> ThreeQuarters)) & (~HighBits)); } } return (hash & 0x7FFFFFFF); } // ELF Hash Function unsigned int ELFHash (char *str) { unsigned int hash = 0; unsigned int x = 0; while (*str) { hash = (hash << 4) + (*str++); if ((x = hash & 0xF0000000L) != 0) { hash ^= (x >> 24); hash &= ~x; } } return (hash & 0x7FFFFFFF); } // BKDR Hash Function unsigned int BKDRHash (char *str) { unsigned int seed = 131; // 31 131 1313 13131 131313 etc.. unsigned int hash = 0; while (*str) { hash = hash * seed + (*str++); } return (hash & 0x7FFFFFFF); } // SDBM Hash Function unsigned int SDBMHash (char *str) { unsigned int hash = 0; while (*str) { hash = (*str++) + (hash << 6) + (hash << 16) - hash; } return (hash & 0x7FFFFFFF); } // DJB Hash Function unsigned int DJBHash (char *str) { unsigned int hash = 5381; while (*str) { hash += (hash << 5) + (*str++); } return (hash & 0x7FFFFFFF); } // AP Hash Function unsigned int APHash (char *str) { unsigned int hash = 0; int i; for (i = 0; *str; i++) { if ((i & 1) == 0) { hash ^= ((hash << 7) ^ (*str++) ^ (hash >> 3)); } else { hash ^= (~((hash << 11) ^ (*str++) ^ (hash >> 5))); } } return (hash & 0x7FFFFFFF); }转载地址:https://blog.csdn.net/iteye_21199/article/details/82478682 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年03月26日 03时46分03秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
作文提升~老师整理的优美拟人句太实用
2019-04-26
作文提升~老师整理的优美排比句太实用
2019-04-26
作文提升~老师整理的夸张句,太实用了,赶快收藏
2019-04-26
作文提升~写景常用的拟人句,很经典
2019-04-26
小学教师资格考试科目一思维导图-教育观、教师观和学生观
2019-04-26
小学教师资格考试科目一思维导图-职业道德
2019-04-26
小学教师资格考试科目一思维导图-逻辑思维能力、阅读理解、写作能力
2019-04-26
什么是劳动型创业者?什么叫做社会平均利润?
2019-04-26
什么是中奖型创业者?
2019-04-26
什么是套利型创业者?
2019-04-26
什么是取势型创业者?
2019-04-26
为什么煲鸡汤给病人喝?
2019-04-26
带团队很简单,管理就是十六字!(管理者必看)
2019-04-26
写作技巧~100段作文排比句(61-80段),考试一定用得上,赶紧收藏!
2019-04-26
判别式模型和生成式模型
2019-04-26
SVM和LR的适用情况,SVM中核函数的作用。
2019-04-26
以下机器学习中,在数据预处理时,不需要考虑归一化处理的是
2019-04-26
在统计模式识分类问题中,当先验概率未知时,可以使用N-P判决和最小最大损失准则
2019-04-26
聚类的定义和2个基本问题
2019-04-26
聚类算法的种类介绍
2019-04-26