PHP中如何将ip地址转成十进制数
ip地址转成十进制数是根据的公式算出来的:74×256^3+30×256^2+10×256+243 = 1243482867或者说分别将IP地址的四位数字化成十六进制,将得到的十六进制去掉\"小数点\"后再化为十进制即可.
PHP 中如何将ip地址转成十进制数呢?现在PHP中有很多时候都会用到ip地址,但是这个ip地址获取的时候都不是10进制的,那么PHP中如何将ip地址转成十进制数就是我们比较头疼的事情了,下面两种方法是我整理处理来相对比较简单的IP地址转成十进制数的方法,希望能对大家有所帮助.
方法一,代码如下:
public function ipToLong(){ $ip = $_SERVER [ 'REMOTE_ADDR' ]; $ip = explode ( '.' , $ip ); $ip = array_reverse ( $ip ); //数组反转 $r = 0; for ( $i =0, $j = count ( $ip ); $i < $j ; $i ++){ $r += $ip [ $i ] * pow(256, $i ); } $r = sprintf( "%u" , $r ); echo $r ; }方法二,代码如下:
public function ipToLong(){ $ip = $_SERVER [ 'REMOTE_ADDR' ]; $ip = explode ( '.' , $ip ); $r = ( $ip [0] << 24) | ( $ip [1] << 16) | ( $ip [2] << 8) | $ip [3]; if ( $r < 0) $r += 4294967296; echo $r ; }两个结果在本地服务器中的结果都是3232235877,运用的ip是192.168.1.101,我们用ping 192.168.1.101 和 ping 3232235877来进行检测,看是否一样.
可能有些朋友不知道mysql与php中都提供了IP转换十进制数函数,MySQL 提供了INET_ATON 和 INET_NTOA 两个函数来进行地址和整数之间的转换.
1. IP 由点分格式,转换为数字格式,代码如下:
mysql> select inet_aton( '127.0.0.1' ); + ------------------------+ | inet_aton( '127.0.0.1' ) | + ------------------------+ | 2130706433 | + ------------------------+ 1 row in set (0.00 sec)2. IP 由数字格式转换为点分格式,代码如下:
mysql> select inet_ntoa(2130706433); + -----------------------+ | inet_ntoa(2130706433) | + -----------------------+ | 127.0.0.1 | + -----------------------+ 1 row in set (0.00 sec)php可直接使用ip2long函数,代码如下:
echo ip2long ( '192.168.1.38' ); //输出:3232235814查看更多关于PHP中如何将ip地址转成十进制数 - php高级应用的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did30128