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

原创
小哥 2年前 (2023-05-17) 阅读数 133 #PHP

最近要做个十进制数字的可逆转换做邀请码,一直没搞清楚怎么弄的,实在太复杂了,今天弄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 
; echo bindec(decbin(ip2long($ip))); echo
; $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
; echo long2ip($result);

以上输出的结果为:
203569230
203569230
12.34.56.78
12.34.56.78

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

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

原文地址

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除

热门