Heim > Artikel > Backend-Entwicklung > Warum hat PHP ip2long negative Zahlen? Wie kann man es lösen?
php bietet ip2long- und long2ip-Methoden zur Verarbeitung von IP-Adressen.
1. ip2long – Konvertieren eines IPV4-String-Internetprotokolls in ein digitales Format
int ip2long ( string $ip_address )
Parameter: ip_address Eine Adresse in einem Standardformat.
Rückgabewert: Gibt die konvertierte Nummer der IP-Adresse oder FALSE zurück, wenn ip_address ungültig ist.
2. long2ip – Konvertieren Sie das Zahlenformat in ein IPV4-String-Internetprotokoll
string long2ip ( string $proper_address )
Parameter: proper_address Die korrekte Adresse von Long Integer Express.
Rückgabewert: Gibt die Internetadresse als String zurück.
3. So verwenden Sie
$ip = '10.1.1.1'; $ip_long = ip2long($ip); echo $ip_long.PHP_EOL; // 167837953 echo long2ip($ip_long); // 10.1.1.1
4. Ursachen und Lösungen für negative Zahlen
Wenn die IP-Adresse relativ ist große, negative Zahlen werden in ip2long angezeigt:
$ip = '192.168.101.100'; $ip_long = ip2long($ip); echo $ip_long.PHP_EOL; // -1062705820 echo long2ip($ip_long); // 192.168.101.100
Grunderklärung:
IPv4 verwendet vorzeichenlose 32-Bit-Adressen, daher gibt es höchstens 2 hoch 32 minus 1 (4294967295) Adressen. Schreiben Sie Dezimalzahlen, getrennt durch 4 Dezimalstellen.
wird als A.B.C.D aufgezeichnet, zum Beispiel: 192.168.100.100.
Jede Dezimalzahl in der IPv4-Adresse ist ein vorzeichenloses Byte im Bereich von 0 bis 255. Die Konvertierung der IPv4-Adresse in eine vorzeichenlose Zahl bedeutet eigentlich, jede Dezimalzahl in den entsprechenden 8 Bits zu platzieren, wodurch ein 4-Byte-Byte ohne Vorzeichen entsteht ganze Zahl. 192.168.100.100, 192.168 in den hohen 8 Ziffern und 100.100 in den niedrigen 8 Ziffern.
Lösung:
Verwenden Sie %u, um bei der Ausgabe vorzeichenlose Ganzzahlen zu formatieren.
$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
Empfohlene verwandte Tutorials: „PHP-Tutorial“
Das obige ist der detaillierte Inhalt vonWarum hat PHP ip2long negative Zahlen? Wie kann man es lösen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!