PHP的ip2long和long2ip函数的实现原理

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

主要是自己整理了下:


?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$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);

以上输出的结果为:

?
1
2
3
4
203569230
203569230
12.34 . 56.78
12.34 . 56.78


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

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


  www。s1979。com/ys/msyw/20140704/1193667。html

  www。qdxw。com。cn/yx/yybd/4191638。html

  www。sxycrb。com/yy/ys/3663308。html



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值