ホームページ >バックエンド開発 >PHPチュートリアル >PHPのip2longおよびlong two ip関数の実装原理
PHPのip2long関数とlong2ip関数の実装原理
最近、10進数を可逆変換して招待コードを作りたいと思ったのですが、やり方がわかりません。これは今日 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);
20356923020356923012.34.56.7812.34.56.78
これは達成するための 1 つの方法にすぎません。他の方法もあります
同様の方法を使用したいのですが、10進数は他の10進数値に変換でき、元に戻すことができますが、1000100など、途中に0が多い値に遭遇した場合には問題が多すぎます