php中ip2long和long2ip函数的实现方法-创新互联

这篇文章将为大家详细讲解有关php中ip2long和long2ip函数的实现方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

为乡宁等地区用户提供了全套网页设计制作服务,及乡宁网站建设行业解决方案。主营业务为做网站、网站设计、乡宁网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

ip2long函数会把一个ipv4转换成一串整型数字的形式,便于存储在数据库中可以节省空间和索引。ip2long函数的实现是先通过 . 把ip切割成4个数字,并进行位左移运算,最终拼接而成。反之就是long2ip的实现了。 ip2long如:IP(a.b.c.d)→按点切割→a^24+b^16+c^8+d

一、ip2long函数实现

//php函数实现

$ip = "8.8.8.8";

echo ip2long($ip); // 134744072

1.实现1,根据上图方式进行相应位运算实现

< ?php   $ip = "8.8.8.8";   list($ip1,$ip2,$ip3,$ip4) = explode('.',$ip);   echo ($ip1<<24)|($ip2<<16)|($ip3<<8)|($ip4);   // 134744072   2.实现2   $ip = "8.8.8.8";   $ips = explode('.', $ip);   $result = 0;   $result += $ips[0]<<24;   $result += $ips[1]<<16;   $result += $ips[2]<<8;   $result += $ips[3];   echo $result;   二、long2ip函数实现

//php函数实现

echo long2ip(134744072);

//8.8.8.8

以上代码是由PHP的内置函数long2ip来实现的。但是对于想通过移位来自己实现的童鞋来说,可能没有那么简单。因为PHP的>>运算符是算术右移运算符,所以如果高位是1的话,右移的结果是在高位补1,这跟结果不符。但是我们可以用另一种思路去解决:保存高位(符号位),然后将高位置0,之后再将高8位的高位置1(这取决于之前保存的符号位)。代码实现如下:

< ?php   $ip_long = 134744072;   $ip1 = ($ip_long >> 24) & 0xff; // 跟0xff做与运算的目的是取低8位

$ip2 = ($ip_long >> 16) & 0xff;

$ip3 = ($ip_long >> 8) & 0xff;

$ip4 = $ip_long & 0xff;

echo $ip1 . '.' . $ip2 . '.' . $ip3 . '.' . $ip4 . "\n";

关于“php中ip2long和long2ip函数的实现方法”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。


文章标题:php中ip2long和long2ip函数的实现方法-创新互联
当前URL:http://hbruida.cn/article/cojpds.html