Habituellement, le format d'adresse IP que nous voyons est un format décimal en pointillé similaire à 192.168.1.1 . Mais parfois, l'adresse IP est représentée comme une chaîne hexadécimale continue, par exemple:
C0A80101
Il s'agit en fait d'une expression hexadécimale de 192.168.1.1 .
Chaque numéro hexadécimal représente un octet (8 bits) dans l'adresse IP, par exemple:
C0 = 192
A8 = 168
01 = 1
01 = 1
La fonction hexdec intégrée de PHP peut convertir les chaînes hexadécimales en nombres décimaux. Mais il convient de noter qu'il convertit le nombre global et ne peut pas être utilisé directement pour convertir l'adresse IP hexadécimale dans quatre segments. Par conséquent, nous devons d'abord diviser la chaîne hexadécimale en deux bits, puis la convertir en nombre décimal.
Le script suivant montre comment convertir une adresse IP hexadécimale 8 bits continue en format décimal en pointillé en utilisant PHP:
<?php
function hexIpToDecimal($hexIp) {
// Convertir la chaîne entrée en majuscules,Assurer un format unifié
$hexIp = strtoupper($hexIp);
// Vérifiez si la longueur est correcte(IPv4 Oui 8 Hexadécimal)
if (strlen($hexIp) !== 8) {
return false; // Erreur de format d'entrée
}
$ipParts = [];
// Un groupe pour deux,Convertir en décimal
for ($i = 0; $i < 8; $i += 2) {
$partHex = substr($hexIp, $i, 2);
$partDec = hexdec($partHex);
$ipParts[] = $partDec;
}
// Épissé dans un format pointillé
$decimalIp = implode('.', $ipParts);
return $decimalIp;
}
// Exemple de test
$hexIp = "C0A80101";
$decimalIp = hexIpToDecimal($hexIp);
echo "hexadécimalIP: $hexIp Après la conversion à: $decimalIp\n";
?>
Résultats en cours:
hexadécimalIP: C0A80101 Après la conversion à: 192.168.1.1
Vérification des entrées <br> La fonction garantit d'abord que la chaîne hexadécimale passée mesure 8 bits de long (correspondant à 4 octets d'IPv4).
Traitement segmenté <br> Utilisez substr pour prendre deux caractères à la fois pour représenter un octet.
Convertir hexadécimal en décimal <br> Utilisez la fonction hexdec pour convertir une chaîne hexagonale à deux chiffres en un numéro décimal.
Format épissage <br> Connectez les quatre nombres décimaux convertis avec des nombres de points pour générer des adresses IP décimales pointillées communes.
Si l'adresse IP hexadécimale que vous rencontrez est délimitée, comme C0: A8: 01: 01 , vous pouvez d'abord supprimer le délimiteur, puis utiliser la méthode ci-dessus pour y faire face:
$hexIp = str_replace(':', '', 'C0:A8:01:01');
$decimalIp = hexIpToDecimal($hexIp);
echo $decimalIp; // Sortir:192.168.1.1
Grâce à la méthode ci-dessus, en utilisant la fonction hexdec de PHP, vous pouvez facilement convertir l'adresse IP représentée en hexadécimal en format de point de point décimal familier. J'espère que cet article vous aide!