В 32-разрядной системной платформе (например, Windows) значение int является 32-разрядным и возвращает отрицательное число после переполнения. Получите это отрицательное число на 64-разрядных платформах
/**
* uid 32-bit negative to positive, PHP must support 64-bit, otherwise no conversion
* @param int $num
* @return int
*/
function uid32FixNegative($num)
{
if(PHP_INT_SIZE == 4 || !is_int($num) || $num >= 0) {
return $num;
}
$bin = decbin($num);
return bindec(substr($bin, -32));
}