[原创]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秒. |
|
|