Tag Archives: long2ip

解决PHP中long2ip反序的问题

原因是:php中没有考虑主机序和网络序的转换,导致主机序为little-endian的机器上,long2ip()得到的IP反了。
下面是解决办法,我们自己判断little-endian和big-endian:

[php]
function long2ip_fix($ip_32)
{
$ip = long2ip($ip_32);
//先判断是big-endian还是little-endian
$foo = 0x3456789a;
switch (pack (‘L’, $foo)) {[……]

继续阅读

PHP中让人郁闷的long2ip和ip2long

一般情况下,这两个函数是没法正常工作的:并不能正确完成ip和uint_32的互相转换。
解决办法:
bindec(decbin(ip2long( '218.22.80.170 ')))
long2ip正在寻找中。。。
目前的办法是,手动反向
 
function direction_fix($ip) {
//将读取的little-endian编码的4个字节转化为长整型数
$tmp = split("\.",$ip);
return $tmp[3].&[……]

继续阅读