Convertisseur IPv6 ↔ BigInt

Convertir les adresses IPv6 en/depuis des entiers 128 bits

Quick Convert

Batch Input

Results

Results will appear here

About IPv6 Integers

IPv6 addresses are 128-bit integers, ranging from 0 to 2128-1 (340,282,366,920,938,463,463,374,607,431,768,211,455). This tool uses JavaScript's BigInt for precise handling of these large numbers.

Le convertisseur IPv6 vers BigInt transforme les adresses IPv6 entre la notation hexadécimale à deux-points et leur représentation sous-jacente en entier 128 bits en utilisant BigInt pour une précision totale. Saisissez une adresse comme 2001:db8::1 pour obtenir 42540766411282592856903984951653826561, ou collez un grand nombre décimal pour obtenir l'adresse IPv6 correspondante en formes compressée et étendue.

Comprendre BigInt pour les adresses IPv6

Les adresses IPv4 sont des nombres de 32 bits qui tiennent confortablement dans un type entier standard -- la plus grande valeur est d'environ 4,3 milliards, bien dans les limites du type numérique de tout langage de programmation moderne. IPv6 est une tout autre histoire. Avec 128 bits, l'espace d'adressage s'étend de 0 à 340 282 366 920 938 463 463 374 607 431 768 211 455 -- un nombre si grand qu'il comporte 39 chiffres. Aucun entier standard de 64 bits ne peut le contenir, et le type Number de JavaScript perd en précision pour les entiers supérieurs à environ 9 quadrillions (2^53).

C'est pourquoi BigInt existe. BigInt est un type entier à précision arbitraire disponible en JavaScript, Python, Java et la plupart des langages modernes. Il peut représenter des nombres de n'importe quelle taille sans arrondi ni perte de précision, ce qui en fait l'outil approprié pour l'arithmétique des adresses IPv6. Quand vous convertissez une adresse IPv6 en forme numérique, vous avez besoin de BigInt pour obtenir un résultat exact. Utiliser un entier standard de 64 bits ou un nombre à virgule flottante arrondirait silencieusement la valeur, produisant une adresse proche mais différente de celle de départ -- un bug subtil qui peut être très difficile à traquer.

Les applications pratiques de la conversion BigInt IPv6 sont similaires à celles de la conversion IPv4-vers-entier, mais à une échelle différente. Le stockage en base de données, les calculs de plages, l'énumération séquentielle et le calcul des limites de sous-réseaux fonctionnent tous de la même manière conceptuellement, mais nécessitent une arithmétique BigInt au lieu de mathématiques entières standard. Si vous construisez une application compatible IPv6, comprendre cette conversion est fondamental -- c'est ainsi que vous passez du format colon-hex lisible par l'humain à quelque chose qu'une base de données ou un algorithme peut traiter efficacement.

Comment convertir une adresse IPv6 en BigInt (et inversement)

  1. Saisissez une adresse IPv6 dans n'importe quelle notation valide (compressée, étendue ou mixte) ou un entier décimal de 0 à 2^128 - 1
  2. Cliquez sur Convert pour voir la représentation équivalente dans l'autre format
  3. Consultez la valeur BigInt complète, l'approximation en notation scientifique, ainsi que les formes IPv6 compressée et étendue

Exemples de conversion IPv6 vers BigInt

Adresse IPv6Valeur BigInt
::0
::11
::ffff:192.168.1.1281473913978881
fe80::1338288524927261089654018896841347694593
2001:db8::142540766411282592856903984951653826561
2001:db8::ff00:42:832942540766411282592856904136881884209961
ff02::1338963523518870617245727861372981592065
ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff340282366920938463463374607431768211455

Conversion étape par étape : 2001:db8::1

Expanded:  2001:0db8:0000:0000:0000:0000:0000:0001

Hex digits: 20010db8000000000000000000000001

BigInt:    0x20010db8000000000000000000000001
         = 42540766411282592856903984951653826561

Conversion inverse : BigInt 1 vers ::1

BigInt:     1
Hex:        0x00000000000000000000000000000001
Grouped:    0000:0000:0000:0000:0000:0000:0000:0001
Compressed: ::1

Pourquoi utiliser le convertisseur IPv6 BigInt

  • Stockage d'adresses IPv6 en base de données -- stockez les adresses IPv6 sous forme d'entiers 128 bits dans les bases de données supportant les grands types numériques (PostgreSQL numeric, MySQL DECIMAL(39,0), ou deux colonnes BIGINT pour les moitiés haute et basse de 64 bits)
  • Arithmétique de plages d'adresses -- calculez le nombre d'adresses dans un préfixe IPv6 en calculant 2^(128 - longueur_du_préfixe), opérations qui nécessitent la précision BigInt
  • Calcul des limites de sous-réseaux -- trouvez l'adresse réseau en appliquant un masque binaire : BigInt_adresse & BigInt_masque, et l'adresse de diffusion par : BigInt_adresse | ~BigInt_masque
  • Énumération séquentielle d'adresses -- générez des adresses IPv6 consécutives en incrémentant la valeur BigInt, utile pour les outils de scan ou d'allocation
  • Tri compatible IPv6 -- triez les adresses IPv6 numériquement en comparant leurs valeurs BigInt, évitant la complexité de la comparaison de chaînes hexadécimales à deux-points
  • Visualisation de l'espace d'adressage -- convertissez les limites de préfixes en plages numériques pour tracer les allocations IPv6 sur des lignes numériques ou des cartes de chaleur

Fonctionnement de la conversion IPv6 vers BigInt

L'espace d'adressage 128 bits

Les adresses IPv6 sont des valeurs de 128 bits, produisant des entiers dans une plage bien au-delà de ce que les types numériques standard peuvent gérer :

PropriétéValeur
Bits128
Adresse minimale:: = 0
Adresse maximaleffff:...:ffff = 340,282,366,920,938,463,463,374,607,431,768,211,455
Total d'adresses2^128 = ~3.4 x 10^38

Les entiers standard 64 bits plafonnent à 2^63 - 1 (~9.2 x 10^18), ce qui est environ 3.7 x 10^19 fois trop petit pour IPv6. Le Number.MAX_SAFE_INTEGER de JavaScript est 2^53 - 1 (~9 x 10^15), encore plus limité. BigInt est indispensable pour l'arithmétique d'adresses IPv6 sans perte.

Algorithme de conversion

  1. Développez l'adresse IPv6 en notation complète à 8 groupes avec les zéros initiaux
  2. Concaténez tous les chiffres hexadécimaux en une seule chaîne de 32 caractères
  3. Parsez la chaîne hexadécimale comme une valeur BigInt en base 16
// JavaScript BigInt conversion
const ipv6 = "2001:0db8:0000:0000:0000:0000:0000:0001";
const hex = ipv6.replace(/:/g, "");           // "20010db8000000000000000000000001"
const bigint = BigInt("0x" + hex);            // 42540766411282592856903984951653826561n

Stratégies de stockage en base de données

Comme la plupart des bases de données ne disposent pas d'un type entier natif 128 bits, les approches courantes incluent :

-- PostgreSQL: Use NUMERIC for exact 128-bit storage
CREATE TABLE ipv6_addresses (
    id SERIAL PRIMARY KEY,
    address NUMERIC(39, 0) NOT NULL
);

-- MySQL: Use BINARY(16) for compact storage
CREATE TABLE ipv6_addresses (
    id INT AUTO_INCREMENT PRIMARY KEY,
    address BINARY(16) NOT NULL
);

-- Alternative: Split into two 64-bit halves
CREATE TABLE ipv6_addresses (
    id INT AUTO_INCREMENT PRIMARY KEY,
    address_high BIGINT UNSIGNED NOT NULL,
    address_low  BIGINT UNSIGNED NOT NULL
);

Conseils pratiques pour les opérations BigInt IPv6

L'erreur la plus courante lorsqu'on travaille avec des valeurs BigInt IPv6 est de mélanger les types BigInt et Number classiques. En JavaScript, BigInt et Number sont incompatibles -- vous ne pouvez pas additionner 1n et 1 sans conversion explicite. Cela signifie que l'ensemble de votre pipeline d'arithmétique d'adresses doit utiliser BigInt de manière cohérente. Si une fonction retourne un Number là où un BigInt était attendu, le résultat sera soit un TypeError soit une perte silencieuse de précision, selon le langage et le contexte.

Lors du stockage d'adresses IPv6 en base de données, considérez vos schémas de requêtes avant de choisir une stratégie de stockage. Le type NUMERIC(39,0) de PostgreSQL stocke le BigInt complet et supporte les requêtes de plage, mais il est plus lent que le stockage binaire pour les recherches par correspondance exacte. Le type BINARY(16) de MySQL est compact (exactement 16 octets) et rapide pour les correspondances exactes, mais les requêtes de plage nécessitent une conversion en valeurs numériques. L'approche à deux colonnes BIGINT divise l'adresse en moitiés haute et basse de 64 bits, ce qui fonctionne bien pour les requêtes de plage si la plupart de vos filtrages portent sur la partie réseau (64 bits supérieurs). Choisissez la stratégie qui correspond à la façon dont vous interrogez réellement les données, pas celle qui semble la plus élégante dans le schéma.

Pour les calculs de taille de préfixe, n'oubliez pas que les nombres IPv6 deviennent très grands très vite. Un préfixe /64 contient 2^64 adresses -- environ 18,4 quintillions. Un /48 contient 2^80 adresses. Ces nombres sont utiles pour comprendre l'échelle d'IPv6, mais ils sont rarement significatifs pour la planification de capacité pratique. Personne ne va manquer d'adresses dans un /64, donc la question porte généralement sur le nombre de sous-réseaux /64 dont vous avez besoin, pas sur le nombre d'adresses dans chacun. Utilisez l'arithmétique BigInt pour les calculs de limites, mais raisonnez en termes de nombre de préfixes pour la planification.

Questions fréquentes

Pourquoi ne puis-je pas utiliser un nombre JavaScript standard pour les adresses IPv6 ?

Les nombres JavaScript sont des valeurs à virgule flottante IEEE 754 64 bits qui perdent en précision pour les entiers supérieurs à 2^53 (9 007 199 254 740 992). Les adresses IPv6 peuvent atteindre 2^128, soit environ 10^38 -- bien au-delà de la plage d'entiers sûrs. Utiliser Number arrondirait silencieusement la valeur, produisant des conversions d'adresses incorrectes. BigInt fournit des entiers à précision arbitraire sans arrondi.

Comment calculer le nombre d'adresses dans un préfixe IPv6 ?

Utilisez l'exponentiation BigInt : 2n ** BigInt(128 - longueur_du_préfixe). Par exemple, un préfixe /64 contient 2n ** 64n = 18 446 744 073 709 551 616 adresses. Un /48 contient 2n ** 80n = 1 208 925 819 614 629 174 706 176 adresses. Ces nombres sont trop grands pour les types entiers standard mais se manipulent facilement avec BigInt.

Y a-t-il un coût en performance à utiliser BigInt au lieu de Number ?

Oui. Les opérations BigInt sont plus lentes que les opérations Number natives car elles nécessitent une arithmétique à précision arbitraire. Pour la plupart des cas d'usage réseau -- conversion d'adresses, calcul de plages, comparaison de valeurs -- la différence de performance est négligeable. L'arithmétique BigInt ne devient sensiblement plus lente que lors de millions d'opérations dans des boucles serrées, ce qui est rare dans les tâches de gestion d'adresses.

Quel type de base de données dois-je utiliser pour les adresses IPv6 ?

Cela dépend de votre cas d'usage. Les types natifs inet ou cidr de PostgreSQL sont la meilleure option si vous utilisez PostgreSQL, car ils gèrent IPv6 nativement avec des opérateurs intégrés. Pour MySQL, BINARY(16) est compact et efficace. Pour la portabilité entre bases de données, DECIMAL(39,0) ou NUMERIC(39,0) fonctionnent partout et supportent les requêtes de plage, bien qu'ils utilisent plus de stockage que les alternatives binaires.

Puis-je convertir des adresses IPv6 mappées IPv4 comme ::ffff:192.168.1.1 ?

Oui. L'outil commence par développer la notation mixte en forme hexadécimale complète (0000:0000:0000:0000:0000:ffff:c0a8:0101), puis convertit en BigInt normalement. La valeur résultante est 281473913978881, qui se situe dans la plage IPv4-mapped (::ffff:0:0/96).

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