Estoy tratando de consultar un rastreador bittorrent y estoy usando desempaquetar para obtener la lista de direcciones IP de la respuesta. Por lo tanto, algo como esto:¿Por qué el desplazamiento a la derecha en PHP devuelve un número negativo?
$ip = unpack("N", $peers);
$ip_add = ($ip[1]>>24) . "." . (($ip[1]&0x00FF0000)>>16) . "." . (($ip[1]&0x0000FF00)>>8) . "." . ($ip[1]&0x000000FF);
Pero, por alguna razón, me estoy haciendo las siguientes direcciones IP cuando imprimo $ ip_add:
117.254.136.66
121.219.20.250
-43.7.52.163
¿Alguien sabe lo que podría ir mal?
Usted es un salvador! Muchas gracias. No puedo aceptar como respuesta dentro de los 10 minutos posteriores a la publicación:) En cualquier caso, ¿podría decirme qué sucedía con mi método? – Legend
tiene que agregar 2^31 a $ ip antes de los cálculos ($ ip + pow (2, 31)) – zerkms
o $ ip & 0x7FFFFFFF; – zerkms