ホームページ >バックエンド開発 >PHPチュートリアル >PHPにおけるip2longの負の数の問題の解決策

PHPにおけるip2longの負の数の問題の解決策

不言
不言転載
2019-01-12 10:58:193663ブラウズ

この記事は、PHP における負の ip2long 数値の問題の解決策を紹介します。一定の参考値が含まれています。困っている友人は参照してください。お役に立てれば幸いです。

PHP が IP アドレスを処理するための ip2long メソッドと long2ip メソッドを提供していることは誰もが知っているかもしれません。いくつかの概念について説明します。

1.ip2long — IPV4 文字列インターネット プロトコルをデジタル形式に変換します
int ip2long ( string $ip_address )
参数: ip_address 一个标准格式的地址。
返回值: 返回IP地址转换后的数字 或 FALSE 如果 ip_address 是无效的
2.long2ip — デジタル形式を IPV4 文字列インターネット プロトコルに変換します
string long2ip ( string $ip_address )
参数:ip_address 长整型的正确地址表示。
返回值: 返回互联网地址作为字符串。

例:

$ip = '10.0.0.1';
$ip_long = ip2long($ip);
echo $ip_long.PHP_EOL;  // 167772161
echo long2ip($ip_long); // 10.0.0.1

IP アドレスが比較的大きい場合、ip2long は負の値で表示されます:

$ip = '192.168.100.1';
$ip_long = ip2long($ip);
echo $ip_long.PHP_EOL;  // -1062706175
echo long2ip($ip_long); // 192.168.100.1

理由:

IPv4 は符号なし 32 ビット アドレスを使用します。したがって、アドレスは最大でも 2 の 32 乗マイナス 1 (4294967295) です。 10 進数は小数点以下 4 桁で区切って記述します。
A.B.C.D と覚えてください (例: 192.168.100.100)。

IPv4 アドレスの各 10 進数は、0 ~ 255 の範囲の符号なしバイトです。IPv4 アドレスを符号なしの数値に変換します。

もうナンセンスではありません。解決されました。方法:
を使用します。 %u を使用すると、出力時に符号なし整数としてフォーマットされます。

rree

以上がPHPにおけるip2longの負の数の問題の解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。

関連記事

続きを見る