php手动实现ip2long和long2ip

    /**
* 测试
*/
public function testipAction() {
$ip = '10.58.101.175';
echo ip2long($ip);
echo "<br>";
echo $this->myip2long($ip);
echo "<br>";
echo long2ip('171599279');
echo "<br>";
echo $this->mylong2ip('171599279');
} /**
* 自己实现ip2long
* @param $ip
* @return float|int|string
*/
protected function myip2long($ip) {
$newhex = '';
// 将ip分割成数组
$ipsArr = explode('.', $ip);
foreach ($ipsArr as $key => $value) {
// 十进制最大值是255,如果超过,则直接返回
if ($value > 255) {
return '';
}
// 将十进制转化为十六进制
$hex = dechex($value);
// 每个ip最大是255,十六进制是FF,最大是两位
// 比如ip:1.1.1.1如果不补0,则十六进制是1111,十进制是4369
// 如果补0,则十六进制是01010101,十进制是16843009
if (strlen($hex) < 2) {
// 如果十六进制长度小于2,则自动补0
$hex = '0' . $hex;
}
$newhex .= $hex;
}
// 十六进制转化为十进制
$intStr = hexdec($newhex);
return $intStr;
} /**
* 自己实现long2ip
* @param $int
* @return string
*/
protected function mylong2ip($int) {
// FFFFFF最大为4294967295
$int = $int > 4294967295 ? 4294967295 : $int;
// 将十进制转为十六进制
$hex = dechex($int);
//为了避免7位ip出现,我们手动补0
if (strlen($hex) < 8) {
// 长度小于8,则自动补0
$hex = '0'. $hex;
}
// 每两位进行分组。然后查看每组的第一位是否是0,如果是则去掉。然后把得到的值转为十进制,放在数组中,最后把数组用.连接起来
for ($i =0; $i<8;$i+=2) {
$a = substr($hex, $i, 2);
$ippart = substr($a, 0, 1);
if ($ippart === '0') {
$a = substr($a, 1, 1);
}
$aparr[] = hexdec($a);
}
return implode('.', $aparr);
}

最新文章

  1. $scope 的生命周期
  2. html5 上传头像的裁剪
  3. AngularJS指令的详解
  4. Transform组件C#游戏开发快速入门
  5. osg,qt编译的一些问题
  6. oracle组建:ODAC112021Xcopy_x64,在开发机上,不用安装oracle的客户端等开发
  7. HashMap存储数据赋值javabean简单示例
  8. PHP内存消耗
  9. Kafka的coordinator
  10. Android 内存剖析 – 发现潜在问题
  11. nginx流量带宽等请求状态统计( ngx_req_status)
  12. jquery-ui 之draggable详解
  13. KEIL简单实例
  14. JS 实现图片直接下载
  15. 查看Linux系统文本编码-方便修改ssh编码一致
  16. [UWP]附加属性2:实现一个Canvas
  17. JS中的函数、Bom、DOM及JS事件
  18. PHP容器--Pimple运行流程浅析
  19. ●SPOJ 8222 NSUBSTR - Substrings(后缀数组)
  20. shell编程 之 函数

热门文章

  1. 【BZOJ2118】墨墨的等式(同余最短路)
  2. create-react-app 构建的项目使用 mobx (说到底就是为了使用装饰器语法对 babel 做些配置
  3. Tree and Permutation
  4. 算法中Amortised time的理解
  5. 请简述一下 Ajax 的原理及实现步骤
  6. node服务通过Jenkins上线流程
  7. autoprefixer不起作用的坑
  8. C#通用类库
  9. Openstack 实现技术分解 (3) 开发工具 — VIM & dotfiles
  10. 将html转化为canvas图片(清晰度高)的方法