首 页   · 站长博客 · 用户注册 · 会员登陆  · 会员排行  ·最新主题  ·最近回复  精华区  版权声明  ·论坛管理
  当前登录身份:游客,请先登录。  笔名: 口令: 验证码:   
楼 主  index »  PHP原创源码发布区 » [原创]IP地址按整型存入数据库的转换程序  


  作者:一起PHP
  注册时间:2004-02-27
  主题/回复:247/1521
  积分:4649
  等级:★★★★★☆(十一级)
  称号:论坛圣人

  nqp@nqp.me
  4304410
  www.nqp.me

 

 发表:2007-08-25 22:28:48 阅读 2981 次 回复 0 次 得分0  |   字号 字色
[原创]IP地址按整型存入数据库的转换程序

今天在群中讨论到IP地址的存储问题.根据"冷烟"的观点,IP地址以整型存入数据库更有利于提高查询效率和节约空间.顺便就IP地址转换成整数的方法以及从整数转换回IP地址的方法. 最终写成以下两个函数.经试验运行正常.贴在这里,权做备忘.

//IP转换成整数的函数

function IptoInt($ip){
 $ipa=explode(".",$ip);
 $ipn=$ipa[0]*16777216+$ipa[1]*65536+$ipa[2]*256+$ipa[3];
 return $ipn;
}

// 整数还原成IP的函数

function InttoIp($value){
$bin = decbin($value);
$zeros = 32 - strlen($value);
for($i=0;$i<$zeros;$i++)
$bin = '0'.$bin;
$arr = str_split($bin,8);
$ip='';
for($i=0;$i<count($arr);$i++){
  $ip .= bindec($arr[$i]).".";
}
$ip=substr($ip,0,strlen($ip)-1);
return $ip;
}

另外完全不必担心速度问题.经测试100次的转换/还原操作耗时小于1秒.
 
  页数1/1首页 « 1 » 末页
  发表回复:您还没有登陆,无法发表回复。请先[登陆]

一起PHP技术联盟 主办:一起PHP 联系方式:站长QQ:4304410 QQ群:8423742 20159565 站长博客 E-mail: nqp@nqp.me 执行时间:0.003sec
SimsmaBBS 2008 (v6.0) Developed by 17php.com,Copyright(C)2003-2010 All rights reserved. 副本授权:一起PHP官方专用版