Convertisseur IPv4 ↔ entier

Convertir les adresses IPv4 en/depuis des entiers 32 bits

Input IPv4 Addresses

Converts IPv4 addresses to their 32-bit unsigned integer representation.

Conversion Results

Conversion results will appear here

Le convertisseur IPv4 vers entier transforme les adresses IPv4 entre la notation décimale pointée (par ex. 192.168.1.1) et leur représentation en entier non signé 32 bits (par ex. 3232235777). Saisissez l'un ou l'autre format et obtenez la conversion instantanée avec les étapes de calcul intermédiaires, l'équivalent hexadécimal et la décomposition binaire montrant la contribution de chaque octet à la valeur finale.

Comprendre la représentation entière des adresses IPv4

Sous le capot, chaque adresse IPv4 n'est qu'un nombre de 32 bits. La notation décimale pointée que nous utilisons au quotidien -- 192.168.1.1 -- est une façon conviviale d'écrire ce nombre en divisant les 32 bits en quatre morceaux de 8 bits (octets) et en affichant chacun comme une valeur décimale de 0 à 255. La forme entière est le même nombre écrit comme une seule valeur, qui pour 192.168.1.1 est 3 232 235 777. Les deux représentations désignent exactement la même adresse ; la seule différence est la manière dont on l'écrit.

La forme entière est importante en pratique car les ordinateurs travaillent avec des nombres, pas avec des chaînes pointées. Quand vous stockez une adresse IP en base de données, le stockage en chaîne fonctionne mais gaspille de l'espace et rend les requêtes de plage peu fiables. Une colonne VARCHAR(15) utilise jusqu'à 15 octets, tandis qu'un INT UNSIGNED utilise exactement 4 octets -- une réduction de 70 %. Plus important encore, la comparaison de chaînes produit des résultats erronés pour les requêtes de plage : la chaîne "9.0.0.0" se trie après "10.0.0.0" alphabétiquement, alors que l'adresse 9.0.0.0 précède numériquement 10.0.0.0. Le stockage en entier résout ces deux problèmes d'un coup.

Cette conversion permet également une arithmétique simple pour la manipulation d'adresses. Vous voulez savoir si une adresse se trouve dans un sous-réseau ? Convertissez l'adresse, l'adresse réseau et l'adresse de broadcast en entiers, puis vérifiez si l'entier de l'adresse se situe entre les deux autres. Vous voulez générer toutes les adresses d'une plage ? Partez du premier entier et incrémentez jusqu'au dernier. Vous voulez trouver la prochaine adresse disponible après une adresse donnée ? Ajoutez simplement un à l'entier. Toutes ces opérations sont triviales avec des entiers et maladroites avec des chaînes en décimal pointé.

Comment convertir une adresse IPv4 en entier (et inversement)

  1. Saisissez une adresse IPv4 en format décimal pointé ou un entier non signé 32 bits (0 à 4294967295)
  2. Cliquez sur Convert pour voir la représentation équivalente dans l'autre format
  3. Consultez le calcul intermédiaire montrant la contribution de chaque octet à la valeur entière

Exemples de conversion IPv4 vers entier

Adresse IPv4EntierHex
0.0.0.000x00000000
0.0.0.110x00000001
1.0.0.0167772160x01000000
10.0.0.11677721610x0A000001
127.0.0.121307064330x7F000001
172.16.0.128867297290xAC100001
192.168.0.132322355210xC0A80001
192.168.1.132322357770xC0A80101
192.168.1.25532322360310xC0A801FF
255.255.255.25542949672950xFFFFFFFF

Conversion étape par étape : 192.168.1.1

Octet 1:  192 x 256^3  =  192 x 16,777,216  =  3,221,225,472
Octet 2:  168 x 256^2  =  168 x     65,536  =     11,010,048
Octet 3:    1 x 256^1  =    1 x        256  =            256
Octet 4:    1 x 256^0  =    1 x          1  =              1
                                               ─────────────
Total:                                         3,232,235,777

Conversion inverse : 167772161 vers 10.0.0.1

167772161 / 16777216 = 10  remainder 1       → Octet 1: 10
        1 /    65536 =  0  remainder 1       → Octet 2: 0
        1 /      256 =  0  remainder 1       → Octet 3: 0
        1 /        1 =  1                    → Octet 4: 1
                                              → Result: 10.0.0.1

Pourquoi utiliser le convertisseur IPv4 vers entier

  • Optimisation du stockage en base de données -- stocker les adresses IP sous forme d'entiers de 4 octets (INT UNSIGNED en MySQL, integer en PostgreSQL) plutôt que des chaînes de 15 caractères, réduisant le stockage de 70 % et permettant les requêtes de plage indexées
  • Recherches de plages IP -- déterminer si une adresse se trouve dans une plage par simple comparaison numérique : ip_integer BETWEEN start_integer AND end_integer
  • Génération séquentielle d'adresses -- calculer l'adresse IP suivante ou précédente en incrémentant ou décrémentant la valeur entière
  • Tri des adresses IP -- trier les adresses dans le bon ordre numérique en triant leurs équivalents entiers, évitant les problèmes lexicographiques où 9.0.0.0 se retrouverait après 10.0.0.0 avec un tri par chaîne
  • Requêtes de base de données GeoIP -- de nombreuses bases de données GeoIP stockent les plages sous forme de paires d'entiers pour des performances de recherche rapides
  • Outils de scan réseau -- énumérer toutes les adresses d'une plage en itérant de l'entier de début à l'entier de fin

Fonctionnement de la conversion IPv4 vers entier

La structure d'adresse 32 bits

Une adresse IPv4 est fondamentalement un nombre binaire de 32 bits. La notation décimale pointée divise ces 32 bits en quatre octets de 8 bits pour la lisibilité. La forme entière est simplement la valeur décimale de ces 32 bits lus comme un seul nombre.

IPv4:      192    .   168    .     1    .     1
Binary:  11000000   10101000   00000001   00000001
32-bit:  11000000101010000000000100000001
Integer: 3,232,235,777

La formule générale

Integer = (Octet1 x 2^24) + (Octet2 x 2^16) + (Octet3 x 2^8) + Octet4

Cela équivaut à (O1 << 24) | (O2 << 16) | (O3 << 8) | O4 en utilisant des opérations bit à bit, ce qui est la manière dont la plupart des langages de programmation implémentent la conversion en interne.

Exemple de schéma de base de données

-- MySQL: Store IPv4 as unsigned 32-bit integer
CREATE TABLE ip_allowlist (
    id INT AUTO_INCREMENT PRIMARY KEY,
    ip_address INT UNSIGNED NOT NULL,
    description VARCHAR(255),
    INDEX idx_ip (ip_address)
);

-- Insert 192.168.1.1
INSERT INTO ip_allowlist (ip_address, description)
VALUES (3232235777, 'Office gateway');

-- Query: Is 192.168.1.100 in the 192.168.1.0/24 range?
SELECT * FROM ip_allowlist
WHERE ip_address BETWEEN 3232235776 AND 3232236031;

Conseils pratiques pour le stockage d'adresses IP en entiers

Lors de la conception d'un schéma de base de données pour les adresses IP, le choix entre stockage entier et chaîne dépend de vos schémas de requêtes. Si vous recherchez principalement des adresses individuelles par correspondance exacte, le stockage en chaîne avec un index fonctionne bien. Mais dès que vous avez besoin de requêtes de plage -- « trouver toutes les adresses de ce sous-réseau » ou « cette adresse est-elle dans notre plage d'autorisation ? » -- le stockage en entier devient considérablement plus rapide et plus correct. La différence de performance est particulièrement notable avec les recherches GeoIP, où vous parcourez des millions de plages pour chaque requête entrante.

Soyez vigilant avec les entiers signés versus non signés. Un entier signé 32 bits ne va que jusqu'à 2 147 483 647, ce qui correspond à 127.255.255.255. Toute adresse dans la plage de 128.0.0.0 à 255.255.255.255 nécessite un entier non signé. En MySQL, utilisez INT UNSIGNED. En PostgreSQL, utilisez bigint (car PostgreSQL ne dispose pas d'un type natif non signé 32 bits) ou stockez en type inet qui gère cela nativement. Se tromper sur le signe cause une corruption silencieuse des données pour les adresses au-dessus de 127.255.255.255.

Si vous travaillez en JavaScript, sachez que les opérateurs bit à bit traitent les nombres comme des entiers signés 32 bits. L'expression (192 << 24) produit un nombre négatif car 192 positionne le bit de signe. Utilisez l'astuce du décalage à droite non signé -- (192 << 24) >>> 0 -- pour reconvertir en non signé, ou évitez entièrement les opérateurs bit à bit et utilisez la multiplication : 192 * 16777216 + 168 * 65536 + 1 * 256 + 1. Le type Number de JavaScript peut gérer de manière sûre tous les entiers IPv4 puisque le maximum (4 294 967 295) est bien en dessous de la limite d'entier sûr (2^53 - 1).

Questions fréquentes

Pourquoi ne pas simplement stocker les adresses IP comme des chaînes en base de données ?

Le stockage en chaîne fonctionne mais présente des inconvénients. Une chaîne comme "192.168.1.1" utilise 13 octets contre 4 octets pour un entier. Plus important encore, les comparaisons de chaînes produisent des résultats incorrects pour les requêtes de plage -- la chaîne "9.0.0.0" est supérieure à "10.0.0.0" en ordre lexicographique. Le stockage en entier permet des comparaisons de plage correctes avec les opérateurs standard et est nettement plus rapide pour les recherches indexées.

Quelle est la plage d'entiers valide pour les adresses IPv4 ?

La plage valide va de 0 (0.0.0.0) à 4294967295 (255.255.255.255). C'est la plage complète d'un entier non signé 32 bits. Les nombres négatifs et les valeurs dépassant 4294967295 sont invalides et ne correspondent à aucune adresse IPv4.

Comment gérer l'entier en JavaScript ?

Le type Number de JavaScript gère de manière sûre les entiers jusqu'à 2^53 - 1, ce qui est bien plus grand que l'entier IPv4 maximum de 2^32 - 1. L'arithmétique standard fonctionne correctement. Cependant, soyez prudent avec les opérateurs bit à bit en JavaScript, qui traitent les nombres comme des entiers signés 32 bits -- 192.168.1.1 produirait un résultat négatif avec (192 << 24). Utilisez >>> 0 (décalage à droite non signé de zéro) pour reconvertir en non signé.

Puis-je utiliser cet outil pour calculer des plages de sous-réseaux ?

Oui. Convertissez l'adresse réseau et l'adresse de broadcast en entiers, et la plage entre elles (incluse) représente toutes les adresses du sous-réseau. Par exemple, 192.168.1.0/24 a l'entier réseau 3232235776 et l'entier broadcast 3232236031, donc le sous-réseau contient les entiers de 3232235776 à 3232236031 (256 adresses).

Quel est le rapport avec la fonction inet_aton() de MySQL ?

La fonction INET_ATON() de MySQL effectue exactement cette conversion : elle prend une chaîne IPv4 en décimal pointé et retourne l'entier non signé 32 bits. INET_NTOA() fait l'inverse. Cet outil effectue le même calcul, vous permettant de vérifier des conversions ou de calculer des valeurs en dehors d'un contexte de base de données.

Outils associés

IPparse•Outils de calcul réseau et sous-réseau gratuits

© 2026 IPparse. All tools run locally in your browser.

100% Privacy-First • No Data Collected