Normalerweise ist das IP -Adressformat, das wir sehen, ein gepunktetes Dezimalformat ähnlich wie 192.168.1.1 . Manchmal wird die IP -Adresse jedoch als kontinuierliche hexadezimale Zeichenfolge dargestellt, zum Beispiel:
C0A80101
Dies ist eigentlich ein hexadezimaler Ausdruck von 192.168.1.1 .
Alle zwei Hexadezimalzahl repräsentiert beispielsweise ein Byte (8 Bit) in der IP -Adresse:
C0 = 192
A8 = 168
01 = 1
01 = 1
Die integrierte HexDEC- Funktion von PHP kann Hex-Saiten in Dezimalzahlen umwandeln. Es ist jedoch zu beachten, dass es die Gesamtzahl umwandelt und nicht direkt verwendet werden kann, um die Hexadezimal -IP -Adresse in vier Segmenten umzuwandeln. Daher müssen wir die hexadezimale Zeichenfolge zuerst in zwei Bits aufteilen und sie dann in eine Dezimalzahl umwandeln.
Das folgende Skript zeigt, wie eine kontinuierliche 8-Bit-Hexadezimal-IP-Adresse mithilfe von PHP in gepunktetes Dezimalformat konvertiert wird:
<?php
function hexIpToDecimal($hexIp) {
// Konvertieren Sie die eingegebene Zeichenfolge in Großbuchstaben,Stellen Sie ein einheitliches Format sicher
$hexIp = strtoupper($hexIp);
// Überprüfen Sie, ob die Länge korrekt ist(IPv4 Ja 8 Hexadezimal)
if (strlen($hexIp) !== 8) {
return false; // Eingabeformatfehler
}
$ipParts = [];
// Eine Gruppe für jeweils zwei,In Dezimalheit konvertieren
for ($i = 0; $i < 8; $i += 2) {
$partHex = substr($hexIp, $i, 2);
$partDec = hexdec($partHex);
$ipParts[] = $partDec;
}
// In gepunktetes Format gespleißt
$decimalIp = implode('.', $ipParts);
return $decimalIp;
}
// Testbeispiel
$hexIp = "C0A80101";
$decimalIp = hexIpToDecimal($hexIp);
echo "hexadezimalIP: $hexIp Nach Umwandlung zu: $decimalIp\n";
?>
Auslaufergebnisse:
hexadezimalIP: C0A80101 Nach Umwandlung zu: 192.168.1.1
Eingabeprüfung <br> Die Funktion stellt zunächst sicher, dass die bestandene hexadezimale Zeichenfolge 8 Bits lang ist (entsprechend 4 Bytes IPv4).
Segmentierte Verarbeitung <br> Verwenden Sie Substr , um jeweils zwei Zeichen zu nehmen, um ein Byte darzustellen.
Hexadezimal in Dezimalheit konvertieren <br> Verwenden Sie die HexDEC -Funktion, um eine zweistellige Hex-Zeichenfolge in eine Dezimalzahl umzuwandeln.
Formatspleißen <br> Schließen Sie die konvertierten vier Dezimalzahlen mit Punktnummern an, um gemeinsame gepunktete Dezimal -IP -Adressen zu generieren.
Wenn die Hexadezimal -IP -Adresse, die Sie begegnen, abgrenzt, wie z. B. C0: A8: 01: 01 , können Sie zuerst den Trennzeichen entfernen und dann die obige Methode verwenden, um damit umzugehen:
$hexIp = str_replace(':', '', 'C0:A8:01:01');
$decimalIp = hexIpToDecimal($hexIp);
echo $decimalIp; // Ausgabe:192.168.1.1
Mit der obigen Methode können Sie die HexDEC- Funktion von PHP mithilfe der hexadezimalen IP-Adresse problemlos in das bekannte Dezimal-Dot-Teil-Format umwandeln. Hoffe dieser Artikel hilft dir!