这篇文章上次修改于 310 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
- JavaScript默认32位,32位操作系统int类型的最大值是 2147483647,超过该数值会溢出
- php 64位需要使用pack转化
PHP中pack、unpack的详细用法:https://blog.csdn.net/qq_34908844/article/details/79696135
- JavaScript运行结果
- PHP运行结果
function (t) hash33{
for (var e = 0, i = 0, n = t . length; i < n; ++i)
e += (e << 5) + t . charCodeAt(i);
return 2147483647 & e
}
PHP
function hash33($t){
for ( $e = 0, $i = 0, $n = strlen($t); $i < $n; ++$i){
$tmp = $e << 5;
$tmp = unpack("L",pack("L",$tmp))[1];
$e += $tmp+ uniord(mb_substr($t,$i,1,'utf-8'));
}
return 2147483647 & $e;
}