我需要 64 位字符串整数哈希值来实现哈希映射之类的功能。
在我看来,没有可以返回 64 位整数的原生 PHP 哈希功能?
我认为可以获取 sha1 哈希值的第一部分并将其转换为整数。然而,这不会带来最好的性能,而且转换似乎很棘手。
当然,如果不用安装就可以使用原生 PHP 函数就好了。
我尝试了很多,特别是将完整的 64 位十六进制字符串转换为带符号的 64 位整数。现在我得到了这个:
function sha1_64bitInt($str) {
$u = unpack('N2', sha1($str, true));
return ($u[1] << 32) | $u[2];
}
性能处于中间位置。比实现完整的哈希算法(如 SimpleHash 或 dbj2)好很多,但比裸调用慢很多sha1()
or crc32
.
当有一个更好的解决方案来转换为 64 位整数时,就有可能在不破坏向后兼容性的情况下改进这个函数(我希望)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)