Sto cercando di interrogare un bittorrent tracker e sto usando unpack per ottenere l'elenco degli IP dalla risposta. Quindi, qualcosa di simile:Perché il passaggio a destra in PHP restituisce un numero negativo?
$ip = unpack("N", $peers);
$ip_add = ($ip[1]>>24) . "." . (($ip[1]&0x00FF0000)>>16) . "." . (($ip[1]&0x0000FF00)>>8) . "." . ($ip[1]&0x000000FF);
Ma, per qualche motivo, sto ottenendo i seguenti indirizzi IP quando stampo $ ip_add:
117.254.136.66
121.219.20.250
-43.7.52.163
Qualcuno sa che cosa potrebbe andare male?
Sei un salvatore! Molte grazie. Non posso accettare come risposta entro 10 minuti dalla pubblicazione:) In ogni caso, potresti dirmi cosa non ha funzionato con il mio metodo? – Legend
devi aggiungere 2^31 a $ ip prima dei calcoli ($ ip + pow (2, 31)) – zerkms
o $ ip & 0x7FFFFFFF; – zerkms