Пытаюсь получить такой же hash на PHP, как в данном примере
rextester.com/JGN30101
Пошел смотреть исходный код метода System.String.GetHashCode() в
Reference Source
Можно ли переписать его на PHP?
Нужно, чтобы hash был -2038622410
В поисках решения нашел функции на PHP аналогичные hashCode на Java, но результат другой
function hashCode64($str) {
$str = (string)$str;
$hash = 0;
$len = strlen($str);
if ($len == 0 )
return $hash;
for ($i = 0; $i < $len; $i++) {
$h = $hash << 5;
$h -= $hash;
$h += ord($str[$i]);
$hash = $h;
$hash &= 0xFFFFFFFF;
}
return $hash;
}
function hashCode32( $s )
{
$h = 0;
$len = strlen($s);
for($i = 0; $i < $len; $i++)
{
$h = overflow32(31 * $h + ord($s[$i]));
}
return $h;
}
function overflow32($v)
{
$v = $v % 4294967296;
if ($v > 2147483647) return $v - 4294967296;
elseif ($v < -2147483648) return $v + 4294967296;
else return $v;
}
if(PHP_INT_SIZE === 4)
{
echo hashCode32('KD6267330'); // -1999504710
} else {
echo hashCode64('KD6267330'); // 2295462586
}