Javascript 采用DJB Time33算法将长字符串转换为数字
阅读(4539)将字符串转换为数字,例如将url地址转换为数字后,用作对象的key,可以减少key的长度:
function genHash (str){
var hash = 5381;
str = str || '';
for(var i=0, len=str.length; i<len; ++i){
hash += (hash << 5) + str.charAt(i).charCodeAt();
}
return hash & 0x7fffffff;
}
基于 Time33 的哈希函数,又叫 DJBX33A 算法(Daniel J. Bernstein, Times 33 with Addition),其实现就是不断的乘以33。
PHP、Apache、Perl 采用此算法。