2014-09-12 2 views
0

Я пытаюсь использовать некоторую математику в PHP для дешифрования байтов сервера, но я не могу использовать целые числа точно так же, как я могу в Java. Вот пример.PHP Использование парных чисел вместо плавающих

echo intval(-690939880 * 134775813); 

Этот текущий пример печатает -2092836736. Это значение почти правильно. Однако в Java он выводит значение, которое я хочу.

System.out.println(-690939880 * 134775813); 

Значение, приведенное здесь, составляет -2092836744. Как я могу реплицировать это уравнение в PHP так, чтобы он работал?

Я хочу, чтобы значение переполнялось, как указано выше.

+2

Это не 'double's в вашем примере Java, они' int's. – azurefrog

+0

Исправлено. Прости, поздно. Я забыл также упомянуть, что вывод значений float в Java приведет к тому же ответу в PHP, поскольку PHP использует float. Я тестировал удвоения в Java, а также, похоже, работает нормально. Вот почему я спрашиваю. – baseman101

ответ

0

Я исправил проблему. Потребовалось несколько часов, но я нашел решение на StackOverflow.

<?php 
echo int32Val(-690939880 * 134775813); 
//outputs -2092836744 

function int32Val($value) { 
    if ($value < -2147483648) 
     return -(-($value) & 0xffffffff); 
    elseif ($value > 2147483647) 
     return ($value & 0xffffffff); 
    return $value; 
} 
?> 

Ответ: Force PHP integer overflow

Смежные вопросы