Php 来自两种不同语言的哈希函数,结果不相同

Php 来自两种不同语言的哈希函数,结果不相同,php,hash,pawn,Php,Hash,Pawn,我在脚本语言“PAWN”中有此函数: 这给了我: echo intval(hashEX(“测试”)=262145 echo hashEX(“测试”)=262145 有人知道这是为什么以及如何修复吗?为了清楚起见,我希望得到与PHP函数中的PAWN函数相同的值。找到了我的答案: function hashEX($Hash) { $hStr1 = 1; $hStr2 = 0; for($i = 0, $l = strlen($Hash); $i < $l; $i ++)

我在脚本语言“PAWN”中有此函数:

这给了我:

echo intval(hashEX(“测试”)=262145

echo hashEX(“测试”)=262145

有人知道这是为什么以及如何修复吗?为了清楚起见,我希望得到与PHP函数中的PAWN函数相同的值。

找到了我的答案:

function hashEX($Hash)
{
    $hStr1 = 1; $hStr2 = 0;

    for($i = 0, $l = strlen($Hash); $i < $l; $i ++)
    {
        $hStr1 = ($hStr1 + ord($Hash[$i])) % 65521;        
        $hStr2 = ($hStr2 + $hStr1)   % 65521;
    }
    return ($hStr2 << 16) + $hStr1;
}
函数hashEX($Hash) { $hStr1=1;$hStr2=0; 对于($i=0,$l=strlen($Hash);$i<$l;$i++) { $hStr1=($hStr1+ord($Hash[$i]))%65521; $hStr2=($hStr2+$hStr1)%65521; }
return($hStr2)php不应该工作,因为有一个内部hash()函数。啊!很抱歉,我刚刚重命名了它以匹配PAWN的函数。$hStr1+$hash[$I]这在字母中添加了一个数字,PAWN如何处理?
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;
}
function hashEX($Hash)
{
    $hStr1 = 1; $hStr2 = 0;

    for($i = 0, $l = strlen($Hash); $i < $l; $i ++)
    {
        $hStr1 = ($hStr1 + ord($Hash[$i])) % 65521;        
        $hStr2 = ($hStr2 + $hStr1)   % 65521;
    }
    return ($hStr2 << 16) + $hStr1;
}