转化过程演练
ip:192.168.10.17
ip转化16进制码:C0-A8-0A-11 (比如17=1*16+1,10=0*16+A以此类推)
最后就变成算 C0-A8-0A-11的16进制转10进制的算法了
演练推算过程
C0 = 12*16 + 0 = 192
A8 = 10*16+8 = 168
0A = 0*16 + 10 = 10
11 = 1*16 + 1 = 17
其实就是原来的ip倒过来,然后乘以权重的问题
3221225472 + 11010048 + 2560 + 17 = 3232238097
192*16^6+168*16^4+10*16^2 +17*16^0 = 3232238097
总结:那么既然如此,我们可以省略中间环节,那么算法就是将ip字符串按照"."分割,然后我们给权重 ( 16相当于2^4 )
那就就是倒叙 192>>24 + 168>>16 + 10>>8 + 17 = 3232238097
PHP优化的方法:
<?php
$ip = '192.168.10.17';
$long = sprintf("%u",ip2long($ip));
echo $long;
?>
输出结果:3232238097