1
我对脚本语言的“棋子”这一功能:Hash函数没有给予同样的结果
stock hash(Hash[])
{
new
hStr1 = 1, hStr2 = 0;
for(new i = 0, l = strlen(Hash); i < l; i ++)
{
hStr1 = (hStr1 + Hash[i]) % 65521;
hStr2 = (hStr2 + hStr1) % 65521;
}
return (hStr2 << 16) + hStr1;
}
这将输出:
printf("%d", hash("Test"));
= 64815521返回它作为一个整数
这是PHP函数:
function hashEX($Hash)
{
$hStr1 = 1; $hStr2 = 0;
for($i = 0, $l = strlen($Hash); $i < $l; $i ++)
{
$hStr1 = ($hStr1 + $Hash[$i]) % 65521;
$hStr2 = ($hStr2 + $hStr1) % 65521;
}
return ($hStr2 << 16) + $hStr1;
}
这给我:
echo intval(hashEX("Test"));
= 262145
echo hashEX("Test");
= 262145
任何人都知道这是为什么,以及如何解决它?为了说清楚,我想获得与PHP函数中的PAWN函数相同的值。
的PHP不应该工作,因为有一个内部的hash()函数。 – 2013-03-25 21:08:03
啊!对不起,我只是重命名它以匹配PAWN。 – user1667191 2013-03-25 21:08:51
$ hStr1 + $ Hash [$ i]这为一封信添加了一个数字,PAWN如何处理这个问题? – 2013-03-25 21:16:14