sunny03 发表于 2015-12-24 10:12:25

PHP下十六位数值转IP地址

  PHP函数提供的long2ip和ip2long是IP和整形数值之间的转换,没有和十六位数值的转换,所以写下这个函数。
  
  
  function ntoip($iphex)
  {
  $len=strlen($iphex);//得到16进制字符串的长度
  if(strlen($iphex)
  {
  $iphex='0'.$iphex;//如果长度小于8,在最前面加0
  $len=strlen($iphex); //重新得到16进制字符串的长度
  }
  //这是因为ipton函数得到的16进制字符串,如果第一位为0,在转换成数字后,是不会显示的
  //所以,如果长度小于8,肯定要把第一位的0加上去
  //为什么一定是第一位的0呢,因为在ipton函数中,后面各段加的'0'都在中间,转换成数字后,不会消失
  for($i=0,$j=0;$j
  {//循环截取16进制字符串,每次截取2个长度
  $ippart=substr($iphex,$j,2);//得到每段IP所对应的16进制数
  $fipart=substr($ippart,0,1);//截取16进制数的第一位
  if($fipart=='0')
  {//如果第一位为0,说明原数只有1位
  $ippart=substr($ippart,1,1);//将0截取掉
  }
  $ip[]=hexdec($ippart);//将每段16进制数转换成对应的10进制数,即IP各段的值
  }
  return implode('.', $ip);//连接各段,返回原IP值
  }
  
页: [1]
查看完整版本: PHP下十六位数值转IP地址