Рубрики
Uncategorized

32-разрядное переполнение int в положительное

Автор оригинала: David Wong.

В 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));
    }