在 32 位系统平台(例如:windows)下,int 是 32 位的,溢出后返回的是负数。拿到这个负数,在 64 位平台下
/**
* uid 32 位负数转为正数,必须 php 支持 64 位,否则不转换
* @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));
}