php は、IP アドレス処理のための ip2long メソッドと long2ip メソッドを提供します。
1. ip2long - IPV4 文字列インターネット プロトコルをデジタル形式に変換します
int ip2long ( string $ip_address )
パラメータ: ip_address 標準形式のアドレス。
戻り値: IP アドレスを変換した数値、または ip_address が無効な場合は FALSE を返します。
2、long2ip - 数値形式を IPV4 文字列に変換します。インターネット プロトコル
string long2ip ( string $proper_address )
パラメータ: proper_address 長整数エクスプレスの正しいアドレス。
戻り値: インターネット アドレスを文字列として返します。
3.
$ip = '10.1.1.1'; $ip_long = ip2long($ip); echo $ip_long.PHP_EOL; // 167837953 echo long2ip($ip_long); // 10.1.1.1
4. 負の数の理由とその対処方法
IP アドレスが比較的大きいため、ip2long に負の数値が表示されます:
$ip = '192.168.101.100'; $ip_long = ip2long($ip); echo $ip_long.PHP_EOL; // -1062705820 echo long2ip($ip_long); // 192.168.101.100
理由の説明:
IPv4 は符号なし 32 ビット アドレスを使用するため、最大 2 つのアドレスが存在します。 32乗マイナス1(4294967295)アドレスです。 10 進数は小数点以下 4 桁で区切って記述します。
A.B.C.D と覚えてください (例: 192.168.100.100)。
IPv4 アドレスの各 10 進数は、0 ~ 255 の範囲の符号なしバイトです。IPv4 アドレスを符号なしの数字に変換するということは、実際には、各 10 進数を対応する 8 ビットに配置して、4 バイトの符号なしのバイトを形成することを意味します。整数。 192.168.100.100、上位 8 桁が 192,168、下位 8 桁が 100,100。
解決策:
%u を使用して、出力を符号なし整数としてフォーマットします。
$ip = '192.168.101.100'; $ip_long = sprintf('%u',ip2long($ip)); echo $ip_long.PHP_EOL; // 3232261476 echo long2ip($ip_long); // 192.168.101.100
関連チュートリアルの推奨事項: 「PHP チュートリアル」
以上がphp ip2long に負の数値が含まれるのはなぜですか?どうやって対処すればいいのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。