设为首页收藏本站

PHP开源论坛

 找回密码
 注册

人人连接登陆

无需注册,直接登录

用新浪微博连接

一步搞定

QQ登录

只需一步,快速开始

查看: 1344|回复: 0

PHP IP地址和十进制数字互转 [复制链接]

Rank: 7Rank: 7Rank: 7

发表于 2010-8-4 15:23:56 |显示全部楼层
原创  PHP IP地址和十进制数字互转 收藏

IPV4 可以看做4个256进制的数字, 可以按常规的进制转换换算成十进制.

如 192.168.1.1 换算成10进制:

192*256*256*256 + 168*256*256+1*256+1

其实计算机更擅长移位和与或运算. 可以改进算法如下.

IP 转长整型
  1. public ipToInt($sIP)  
  2. {  
  3.      $aIP = explode('.',$sIP);  
  4.      $iIP = ($aIP[0] << 24) | ($aIP[1] << 16) | ($aIP[2] << 8) | $aIP[3]  
  5.      if($iIP < 0) $iIP += 4294967296;  
  6.      return $iIP;  
  7. }  
复制代码
整型转 IP:
  1. function intToIP($iIP)  
  2. {  
  3.      $xor = array(0x000000ff,0x0000ff00,0x00ff0000,0xff000000);  
  4.      for($i=0; $i<4; $i++)  
  5.      {  
  6.          ${s.$i} = ($iIP & $xor[$i]) >> $i*8;  
  7.          if (${s.$i} < 0) ${s.$i} += 256;  
  8.      }  
  9.      return $s3.'.'.$s2.'.'.$s1.'.'.$s0;  
  10. }
复制代码

使用道具 举报

您需要登录后才可以回帖 登录 | 注册 人人连接登陆

Archiver|手机版|PHP开源网 ( 豫ICP备08005353号 )   

GMT+8, 2012-5-21 03:05

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部