我想查询一个bittorrent跟踪器,并使用unpack从响应中获取IP列表。所以,这样的事情:为什么PHP中的右移会返回一个负数?
$ip = unpack("N", $peers);
$ip_add = ($ip[1]>>24) . "." . (($ip[1]&0x00FF0000)>>16) . "." . (($ip[1]&0x0000FF00)>>8) . "." . ($ip[1]&0x000000FF);
但是,出于某种原因,我得到下面的IP地址,当我打印$ ip_add:
117.254.136.66
121.219.20.250
-43.7.52.163
有谁知道什么可以去错了吗?
你是救世主!非常感谢。在发布10分钟内不能接受答案:)无论如何,你能告诉我我的方法出了什么问题吗? – Legend 2010-04-16 04:08:45
在计算之前($ ip + pow(2,31)) – zerkms 2010-04-16 04:15:38
或$ ip&0x7FFFFFFF,您必须添加2^31到$ ip; – zerkms 2010-04-16 04:18:23