32位int溢出轉成正數

在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));
    }
相關文章
相關標籤/搜索