IPV4 可以看做4个256进制的数字, 可以按常规的进制转换换算成十进制. 
 
如 192.168.1.1 换算成10进制: 
 
192*256*256*256 + 168*256*256+1*256+1 
 
其实计算机更擅长移位和与或运算. 可以改进算法如下. 
 
IP 转长整型-  public ipToInt($sIP)  
 
 - {  
 
 -      $aIP = explode(\'.\',$sIP);  
 
 -      $iIP = ($aIP[0] << 24) | ($aIP[1] << 16) | ($aIP[2] << 8) | $aIP[3]  
 
 -      if($iIP < 0) $iIP += 4294967296;  
 
 -      return $iIP;  
 
 - }  
 
 
  复制代码 整型转 IP:- function intToIP($iIP)  
 
 - {  
 
 -      $xor = array(0x000000ff,0x0000ff00,0x00ff0000,0xff000000);  
 
 -      for($i=0; $i<4; $i++)  
 
 -      {  
 
 -          ${s.$i} = ($iIP & $xor[$i]) >> $i*8;  
 
 -          if (${s.$i} < 0) ${s.$i} += 256;  
 
 -      }  
 
 -      return $s3.\'.\'.$s2.\'.\'.$s1.\'.\'.$s0;  
 
 - }
 
  复制代码 
 
 
 
 |