通过BKDRHASH将字符串转化为数值类型

  似乎很多题目里有任务啊什么的代号是字符串,会增加内存开销和用时,把它们全部转化成int就会好很多,然后研究了一会发现有很多字符串的hash函数,这个BKDRHASH相对还不错,就记录下来。

unsigned int bkdr_hash(const char *str)

     {

         unsigned int seed = 131; // the magic number, 31, 131, 1313, 13131, etc.. orz..

         unsigned int hash = 0;

         unsigned char *p = (unsigned char *) str;



         while (*p)

             hash = hash*seed + (*p++);
             //0x7FFFFFFF是long int 最大值
         return  hash&0x7FFFFFFF;

     }

  seed是一个系数,是为了减少碰撞,也就是重复,因为不加任何处理,光是ASCII码相加肯定很容易出现相同的,那么就无法实现一个字符串对应一个整型,不过这个系数的选取好复杂啊。。。暂时不想去研究,看了一会不看了,emmm。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值