首页 > 编程语言 > 详细

一个好用的hash函数(C语言)

时间:2014-02-28 02:48:33      阅读:726      评论:0      收藏:0      [点我收藏+]
bubuko.com,布布扣
 1 typedef unsigned int  DWORD;
 2 typedef unsigned char BYTE;
 3 
 4 /**********************************************************************
 5 * 函数名称:  mk_hash_index
 6 * 功能描述:  由Key值产生hash索引值
 7 * 输入参数:
 8          pstHashKey:       指向KEY的内容(要强转成DWORD*)
 9          dwHashCount:    hash表中结点的数目
10          dwLen    :         KEY的长度     
11 * 返 回 值:     dwHashVal : hash索引值
12 *作者/时间:     曹国平2014/02/27
13 ***********************************************************************/
14 inline DWORD mk_hash_index(DWORD* pstHashKey, DWORD dwHashCount, DWORD dwLen)
15 {
16     DWORD dwi  ;
17     BYTE* pKeyEnd ;
18     DWORD* pKey ;
19     DWORD dwKeyLen;
20     DWORD dwHashVal = dwHashCount ; 
21   
22     dwKeyLen = dwLen;
23     pKey = (DWORD*)(pstHashKey);
24 
25     for(dwi = dwKeyLen/sizeof(DWORD); dwi>0; dwi--)
26     {
27         dwHashVal = ((dwHashVal << 5) + dwHashVal) + *pKey ;
28         pKey++ ;
29     }
30     dwi = sizeof(DWORD) - (dwKeyLen%sizeof(DWORD)) ;
31     pKeyEnd = (BYTE*)pKey+3 ;
32     while(dwi-- > 0)
33     {
34         *pKeyEnd-- = 0 ;
35     }
36     dwHashVal = ((dwHashVal << 5) + dwHashVal) + *pKey ;
37     dwHashVal = dwHashVal % dwHashCount ;
38     return dwHashVal ;
39 }
bubuko.com,布布扣

一个好用的hash函数(C语言),布布扣,bubuko.com

一个好用的hash函数(C语言)

原文:http://www.cnblogs.com/caoguoping100/p/C_Hash_Fun.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!