以下のような IP アドレスがあるとします。
127.0.0.1
両方の関数が IP アドレスを同じ数値に変換しますか?それとも、それらが異なり、結果が異なりますか?
それらはほとんど同じです。PHP は評価に符号付きの数値を使用するのに対し、MySQL は符号なしを使用するため、ip2longが負の値を返すことがあります。
どちらも と評価されx*(2^24) + y*(2^16) + z*(2^8) + w*(2^0)
ますが、PHP では、署名が長いため、特定の IP アドレスに対して負の値が表示されます。
For signed long, the range is
(2^31) - 1 = −2,147,483,648 to +2,147,483,647
そのため、+2,147,483,647 を超えるアドレスに変換されると、折り返して負の値になります。
ip2long("254.254.254.254"); // -16843010
このリンクでは、これについて詳しく説明しています。
要するに、いいえ、しかしこの機能は次のとおりです。
function ipv4touint($ipv4){
return sprintf('%u',ip2long($ipv4));
}