zoukankan      html  css  js  c++  java
  • PHP的ip2long和long2ip函数的实现原理

    最近要做个十进制数字的可逆转换做邀请码,一直没搞清楚怎么弄的,实在太复杂了,今天弄IP时想到这个可以进行转换,于是研究了下原理:

    主要是自己整理了下:


    $ip = '12.34.56.78';
    $ips = explode('.', $ip);
    $result = 0;
    $result += $ips[0]<<24;
    $result += $ips[1]<<16;
    $result += $ips[2]<<8;
    $result += $ips[3];
    echo bindec(decbin($result));
    echo '<br>';
    echo bindec(decbin(ip2long($ip)));
    echo '<br>';
    
    $str = '';
    $str .= intval($result/intval(pow(2, 24))) .'.';
    $str .= intval(($result&0x00FFFFFF)/intval(pow(2, 16))) .'.';
    $str .= intval(($result&0x0000FFFF)/intval(pow(2, 8))) .'.';
    $str .= intval($result&0x000000FF);
    
    echo $str;
    echo '<br>';
    echo long2ip($result);

    以上输出的结果为:

    203569230
    203569230
    12.34.56.78
    12.34.56.78


    这只是实现的一种方法而已,还有其他的办法

    我是想用类似的方法,可以直接把一个十进制数字转换为其他十进制数值并可逆,但遇到中间有很多0的数值时发现问题太多了,如 1000100 




  • 相关阅读:
    Python基础(一)
    计算机编程和编程语言
    初始Markdown
    Python模块
    Python递归以及面向过程编程
    Python推导式和匿名函数
    Python学闭包函数和装饰器
    Python函数的特点
    Python文件高级应用和如何使用函数
    Python字符编码和文件处理
  • 原文地址:https://www.cnblogs.com/zhouzme/p/5758430.html
Copyright © 2011-2022 走看看