在32位系统平台(例如:windows)下,int是32位的,溢出后返回的是负数。拿到这个负数,在64位平台下php
/** * 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)); }