Discuz教程网

PHP IP地址和十进制数字互转

[复制链接]
authicon dly 发表于 2011-1-7 12:35:01 | 显示全部楼层 |阅读模式
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. }
复制代码







上一篇:Discuz X 插件制作教程(四) ------ 发布插件(作者:monkee)
下一篇:php 模拟POST提交的2种方法
authicon 卡卡猫 发表于 2011-6-22 06:02:56 | 显示全部楼层
楼主真强大
authicon qqoxygen 发表于 2011-6-23 01:59:45 | 显示全部楼层
很好的,我喜欢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-5-2 14:25

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表