Ver Mensaje Individual
  #5 (permalink)  
Antiguo 04/03/2010, 23:58
Avatar de GatorV
GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Muy interesante, acabo de hacer la prueba y efectivamente me da esos valores, es decir un valor diferente para PHP, pero creo que el problema es que el valor se sale del rango de los que acepta PHP, ya que haciendo esta prueba en mi server:
Código:
bash# perl -e 'printf "%d", 2 << 0xFACEB00C'
-> 8192
bash# php -r 'printf("%d", 2 << 0xFACEB00C);'
-> 8192
Da el mismo valor, hay que investigar porque sale de los valores.

Saludos.

Ah efectivamente ya vi la causa del problema, si haces: php -r "echo PHP_INT_MAX;", el máximo valor de PHP es 2147483647, el hex 0xFACEB00C es 4207849484, por lo que al pasarlo por PHP se vuelve un float, y al hacer el shift del float pues pasan cosas extrañas como lo indicado

Bueno solo para poner una posible solución es usar la librería GMP de PHP, lamentablemente no tengo en mi equipo ese dll ni en mi server

Última edición por GatorV; 05/03/2010 a las 00:19