Position actuelle: Accueil> Derniers articles> Implémentez un script PHP qui convertit automatiquement les adresses IP hexadécimales au format décimal

Implémentez un script PHP qui convertit automatiquement les adresses IP hexadécimales au format décimal

gitbox 2025-05-28

Qu'est-ce qu'une adresse IP hexadécimale?

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

Convertir la chaîne hexagonale en utilisant la fonction hexdec php

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.

Exemple de scripts PHP

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&#39;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

Description du code

  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).

  2. Traitement segmenté <br> Utilisez substr pour prendre deux caractères à la fois pour représenter un octet.

  3. 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.

  4. 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.


Extension: gérer IP hexadécimal avec séparateur

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!