64 ビット システムと 32 ビット システムで整数の値を一致させたいのですが、これは私の PHP スクリプトの例です。
function integer_hash_aritmathic ($value)
{
$maxVal = 2147483647 & 0xFFFFFFFF;
$minVal = -2147483648 & 0xFFFFFFFF;
$hash = 0;
for ($i = 0; $i < strlen($value); $i++)
{
$hash = (intval($hash) * 31) + ord($value[$i]);
if ($hash > $maxVal) $hash = $hash + $minVal - $maxVal - 1;
else if ($hash < $minVal) $hash = $hash + $maxVal - $minVal + 1;
}
return (int)$hash;
}
echo integer_hash_aritmathic ('21512510');
32Bit システムでの出力: -951649475
64Bit システムでの出力: 1283243572029
-951649475 の値で、32 ビットの 64 ビット システムで同じ結果が必要です。助けてください... ありがとう、私の英語が下手ですみません...