Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does right shift in PHP return a negative number?

I am trying to query a bittorrent tracker and am using unpack to get the list of IPs from the response. So, something like this:

$ip = unpack("N", $peers);
$ip_add = ($ip[1]>>24) . "." . (($ip[1]&0x00FF0000)>>16) . "." . (($ip[1]&0x0000FF00)>>8) . "." . ($ip[1]&0x000000FF);

But, for some reason, I am getting the following IP addresses when I print $ip_add:

117.254.136.66
121.219.20.250
-43.7.52.163

Does anyone know what could be going wrong?

like image 783
Legend Avatar asked Apr 16 '10 04:04

Legend


1 Answers

use long2ip() to transform number back into ip

like image 66
zerkms Avatar answered Oct 04 '22 02:10

zerkms