Heim > Backend-Entwicklung > PHP-Tutorial > Warum hat PHP ip2long negative Zahlen? Wie kann man es lösen?

Warum hat PHP ip2long negative Zahlen? Wie kann man es lösen?

青灯夜游
Freigeben: 2023-04-09 09:14:01
nach vorne
2864 Leute haben es durchsucht

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 )
Nach dem Login kopieren

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 )
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Verwandte Etiketten:
php
Quelle:cnblogs.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage