ホームページ > php教程 > php手册 > PHPのip2long関数とlong2ip関数の実装原理

PHPのip2long関数とlong2ip関数の実装原理

WBOY
リリース: 2016-06-21 08:47:57
オリジナル
1887 人が閲覧しました

最近、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 &#39;<br/>&#39;;
echo bindec(decbin(ip2long($ip)));
echo &#39;<br/>&#39;;

$str = &#39;&#39;;
$str .= intval($result/intval(pow(2, 24))) .&#39;.&#39;;
$str .= intval(($result&0x00FFFFFF)/intval(pow(2, 16))) .&#39;.&#39;;
$str .= intval(($result&0x0000FFFF)/intval(pow(2, 8))) .&#39;.&#39;;
$str .= intval($result&0x000000FF);

echo $str;
echo &#39;<br/>&#39;;
echo long2ip($result);
ログイン後にコピー

上記の出力の結果は次のようになります:

203569230
203569230
12.34.56.78
12.34.56.78
ログイン後にコピー


これはそれを達成するための 1 つの方法にすぎません。他の方法もあります

私は、10 進数を他の 10 進数値に直接、かつ可逆的に変換できる同様の方法を使用したかったのですが、1000100 など、中間に多くの 0 が含まれる値に遭遇した場合に問題が多すぎることがわかりました。 >






関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート