7

以下のような IP アドレスがあるとします。

127.0.0.1

両方の関数が IP アドレスを同じ数値に変換しますか?それとも、それらが異なり、結果が異なりますか?

4

2 に答える 2

11

それらはほとんど同じです。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

このリンクでは、これについて詳しく説明しています。

于 2012-07-19T08:27:01.113 に答える
7

要するに、いいえ、しかしこの機能は次のとおりです。

function ipv4touint($ipv4){
    return sprintf('%u',ip2long($ipv4));
}
于 2015-08-28T20:17:52.877 に答える