Побитовые сдвиги PHP7 на отрицательное число приведут к ArithmeticError в переполнении стека

Мы планируем перейти на сервер PHP7 и проводим некоторые проверки совместимости с существующим кодом веб-сайта. Одна из найденных проблем связана со следующей функцией и побитовым сдвигом на отрицательное число.

Видимо, это приведет к ошибкам в PHP7. Я признаю, что не до конца понимаю, как работает эта арифметика, но мне было интересно, есть ли у кого-нибудь предложения о том, как изменить функцию, чтобы # 1 поддерживал функциональность и # 2 стал PHP7-совместимым.

/**
* Right shift with zero fill.
*
* @param integer $a number to shift
* @param integer $b number of bits to shift
* @return integer
*/
public function zeroFill($a, $b){
return ($a >= 0) ? ($a >> $b) : ($a >> $b) & (PHP_INT_MAX >> ($b - 1));
}

3

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector