博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
各种字符串hash
阅读量:4676 次
发布时间:2019-06-09

本文共 2389 字,大约阅读时间需要 7 分钟。

unsigned int SDBMHash(char *str){ 	unsigned int hash = 0;  	while (*str) {  	// equivalent to: 	 	hash = 65599*hash + (*str++); 	 	 hash = (*str++) + (hash << 6) + (hash << 16) - hash;  	  }     return (hash & 0x7FFFFFFF);    } // RS Hash Functionunsigned 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 Functionunsigned int JSHash(char *str){  unsigned int hash = 1315423911;    while (*str) {    	hash ^= ((hash << 5) + (*str++) + (hash >> 2));    }   return (hash & 0x7FFFFFFF);} // P. J. Weinberger Hash Functionunsigned 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 Functionunsigned 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 Functionunsigned 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);} // DJB Hash Functionunsigned int DJBHash(char *str){ 		unsigned int hash = 5381; 		  while (*str) { 		  	 hash += (hash << 5) + (*str++);		  } 	return (hash & 0x7FFFFFFF);} // AP Hash Functionunsigned 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://www.cnblogs.com/jiangu66/archive/2013/05/10/3072138.html

你可能感兴趣的文章
Design Pattern --- Strategy
查看>>
mui列表跳转到详情页优化方案
查看>>
一些简单有用的方法合集
查看>>
Neutron 架构 - 每天5分钟玩转 OpenStack(67)
查看>>
详解JS设计模式
查看>>
CPSR寄存器
查看>>
Java基础50题test7—处理字符串
查看>>
保险行业电话外呼型呼叫中心方案
查看>>
自建型呼叫中心
查看>>
input file 文件上传,js控制上传文件的大小和格式
查看>>
Day 6 函数与模块
查看>>
WebApi请求原理
查看>>
[Node.js] node-persist: localStorage on the server
查看>>
jquery.event 研究学习之bind篇
查看>>
LOJ #108. 多项式乘法
查看>>
libusb开发指南
查看>>
SAS基础 -- 逻辑库不存在问题解决
查看>>
Servlet监听器统计在线人数
查看>>
第2章 数字之魅——寻找发帖“水王”
查看>>
eclipse jsp html 格式化 format
查看>>