Convertidor IPv4 ↔ Entero

Convierte direcciones IPv4 a/desde enteros de 32 bits

Input IPv4 Addresses

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

Conversion Results

Conversion results will appear here

El Convertidor de IPv4 a entero transforma direcciones IPv4 entre la notación decimal con puntos (por ejemplo, 192.168.1.1) y su representación como entero sin signo de 32 bits (por ejemplo, 3232235777). Ingresa cualquiera de los dos formatos y obtén la conversión instantánea con los pasos de cálculo intermedios, el equivalente hexadecimal y el desglose binario que muestra cómo cada octeto contribuye al valor final.

Entendiendo la representación entera de IPv4

Internamente, cada dirección IPv4 es simplemente un número de 32 bits. La notación decimal con puntos que usamos cada día -- 192.168.1.1 -- es una forma amigable para humanos de escribir ese número dividiendo los 32 bits en cuatro bloques de 8 bits (octetos) y mostrando cada uno como un valor decimal de 0 a 255. La forma entera es el mismo número escrito como un valor único, que para 192.168.1.1 es 3,232,235,777. Ambas representaciones apuntan exactamente a la misma dirección; la única diferencia es cómo la escribimos.

La forma entera importa en la práctica porque las computadoras trabajan con números, no con cadenas con puntos. Cuando almacenas una dirección IP en una base de datos, el almacenamiento como cadena funciona pero desperdicia espacio y hace que las consultas de rango sean poco confiables. Una columna VARCHAR(15) usa hasta 15 bytes, mientras que un INT UNSIGNED usa exactamente 4 bytes -- una reducción del 70%. Más importante aún, la comparación de cadenas produce resultados incorrectos para consultas de rango: la cadena "9.0.0.0" se ordena después de "10.0.0.0" alfabéticamente, aunque la dirección 9.0.0.0 viene antes de 10.0.0.0 numéricamente. El almacenamiento como entero soluciona ambos problemas de una vez.

Esta conversión también habilita aritmética simple para la manipulación de direcciones. ¿Quieres saber si una dirección está dentro de una subnet? Convierte la dirección, la dirección de red y la dirección de broadcast a enteros, luego verifica si el entero de la dirección está entre los otros dos. ¿Quieres generar todas las direcciones en un rango? Comienza en el primer entero e incrementa hasta llegar al último. ¿Quieres encontrar la siguiente dirección disponible después de una dada? Solo suma uno al entero. Todas estas operaciones son triviales con enteros e incómodas con cadenas decimales con puntos.

Cómo convertir IPv4 a entero (y viceversa)

  1. Ingresa una dirección IPv4 en formato decimal con puntos o un entero sin signo de 32 bits (0 a 4294967295)
  2. Haz clic en Convert para ver la representación equivalente en el otro formato
  3. Visualiza el cálculo intermedio que muestra cómo cada octeto contribuye al valor entero

Ejemplos de conversión de IPv4 a entero

Dirección IPv4EnteroHex
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

Conversión paso a paso: 192.168.1.1

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

Conversión inversa: 167772161 a 10.0.0.1

167772161 / 16777216 = 10  residuo 1       → Octeto 1: 10
        1 /    65536 =  0  residuo 1       → Octeto 2: 0
        1 /      256 =  0  residuo 1       → Octeto 3: 0
        1 /        1 =  1                  → Octeto 4: 1
                                            → Resultado: 10.0.0.1

Cuándo usar el convertidor de IPv4 a entero

  • Optimización de almacenamiento en bases de datos -- almacenar direcciones IP como enteros de 4 bytes (INT UNSIGNED en MySQL, integer en PostgreSQL) en lugar de cadenas de 15 caracteres, reduciendo el almacenamiento un 70% y habilitando consultas de rango indexadas
  • Búsquedas de rangos de IP -- determinar si una dirección está dentro de un rango usando comparación numérica simple: ip_integer BETWEEN start_integer AND end_integer
  • Generación secuencial de direcciones -- calcular la siguiente o anterior dirección IP incrementando o decrementando el valor entero
  • Ordenamiento de direcciones IP -- ordenar direcciones en orden numérico correcto ordenando sus equivalentes enteros, evitando problemas lexicográficos donde 9.0.0.0 se ordenaría después de 10.0.0.0 con ordenamiento de cadenas
  • Consultas a bases de datos GeoIP -- muchas bases de datos GeoIP almacenan rangos como pares de enteros para un rendimiento de búsqueda rápido
  • Herramientas de escaneo de red -- enumerar todas las direcciones en un rango iterando desde el entero inicial hasta el entero final

Cómo funciona la conversión de IPv4 a entero

La estructura de dirección de 32 bits

Una dirección IPv4 es fundamentalmente un número binario de 32 bits. La notación decimal con puntos divide esos 32 bits en cuatro octetos de 8 bits para facilitar la lectura humana. La forma entera es simplemente el valor decimal de esos 32 bits leídos como un solo número.

IPv4:      192    .   168    .     1    .     1
Binario:  11000000   10101000   00000001   00000001
32 bits:  11000000101010000000000100000001
Entero:   3,232,235,777

La fórmula general

Entero = (Octeto1 x 2^24) + (Octeto2 x 2^16) + (Octeto3 x 2^8) + Octeto4

Esto es equivalente a (O1 << 24) | (O2 << 16) | (O3 << 8) | O4 usando operaciones a nivel de bits, que es como la mayoría de los lenguajes de programación implementan la conversión internamente.

Ejemplo de esquema de base de datos

-- MySQL: Almacenar IPv4 como entero sin signo de 32 bits
CREATE TABLE ip_allowlist (
    id INT AUTO_INCREMENT PRIMARY KEY,
    ip_address INT UNSIGNED NOT NULL,
    description VARCHAR(255),
    INDEX idx_ip (ip_address)
);

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

-- Consulta: ¿Está 192.168.1.100 en el rango 192.168.1.0/24?
SELECT * FROM ip_allowlist
WHERE ip_address BETWEEN 3232235776 AND 3232236031;

Consejos prácticos para almacenamiento de IP como entero

Al diseñar un esquema de base de datos para direcciones IP, la elección entre almacenamiento como entero o como cadena depende de tus patrones de consulta. Si principalmente buscas direcciones individuales por coincidencia exacta, el almacenamiento como cadena con un índice funciona bien. Pero en el momento en que necesitas consultas de rango -- "encontrar todas las direcciones en esta subnet" o "¿está esta dirección en nuestro rango de permitidos?" -- el almacenamiento como entero se vuelve dramáticamente más rápido y más correcto. La diferencia de rendimiento es especialmente notable con búsquedas GeoIP, donde estás buscando a través de millones de rangos para cada solicitud entrante.

Ten cuidado con los enteros con signo versus sin signo. Un entero de 32 bits con signo solo llega hasta 2,147,483,647, lo que corresponde a 127.255.255.255. Cualquier dirección en el rango 128.0.0.0 hasta 255.255.255.255 requiere un entero sin signo. En MySQL, usa INT UNSIGNED. En PostgreSQL, usa bigint (ya que PostgreSQL no tiene un tipo nativo de 32 bits sin signo) o almacena como inet que maneja esto nativamente. Tener el signo incorrecto causa corrupción silenciosa de datos para direcciones por encima de 127.255.255.255.

Si trabajas en JavaScript, ten en cuenta que los operadores a nivel de bits tratan los números como enteros de 32 bits con signo. La expresión (192 << 24) produce un número negativo porque 192 establece el bit de signo. Usa el truco del desplazamiento a la derecha sin signo -- (192 << 24) >>> 0 -- para convertir de vuelta a sin signo, o evita los operadores a nivel de bits por completo y usa multiplicación: 192 * 16777216 + 168 * 65536 + 1 * 256 + 1. El tipo Number de JavaScript puede manejar de forma segura todos los enteros IPv4 ya que el máximo (4,294,967,295) está muy por debajo del límite de enteros seguros (2^53 - 1).

Preguntas frecuentes

¿Por qué no simplemente almacenar direcciones IP como cadenas en la base de datos?

El almacenamiento como cadena funciona pero tiene desventajas. Una cadena como "192.168.1.1" usa 13 bytes versus 4 bytes para un entero. Más importante aún, las comparaciones de cadenas producen resultados incorrectos para consultas de rango -- la cadena "9.0.0.0" es mayor que "10.0.0.0" lexicográficamente. El almacenamiento como entero habilita comparaciones de rango correctas con operadores estándar y es significativamente más rápido para búsquedas indexadas.

¿Cuál es el rango de enteros válido para direcciones IPv4?

El rango válido es 0 (0.0.0.0) a 4294967295 (255.255.255.255). Este es el rango completo de un entero sin signo de 32 bits. Los números negativos y valores que exceden 4294967295 son inválidos y no corresponden a ninguna dirección IPv4.

¿Cómo manejo el entero en JavaScript?

El tipo Number de JavaScript maneja de forma segura enteros hasta 2^53 - 1, que es mucho mayor que el máximo entero IPv4 de 2^32 - 1. La aritmética estándar funciona correctamente. Sin embargo, ten cuidado con los operadores a nivel de bits en JavaScript, que tratan los números como enteros de 32 bits con signo -- 192.168.1.1 produciría un resultado negativo con (192 << 24). Usa >>> 0 (desplazamiento a la derecha sin signo por cero) para convertir de vuelta a sin signo.

¿Puedo usar esta herramienta para calcular rangos de subnet?

Sí. Convierte la dirección de red y la dirección de broadcast a enteros, y el rango entre ellos (inclusive) representa todas las direcciones en la subnet. Por ejemplo, 192.168.1.0/24 tiene el entero de red 3232235776 y el entero de broadcast 3232236031, así que la subnet contiene los enteros 3232235776 a 3232236031 (256 direcciones).

¿Cómo se relaciona esto con la función inet_aton() en MySQL?

La función INET_ATON() de MySQL realiza exactamente esta conversión: toma una cadena IPv4 en decimal con puntos y devuelve el entero sin signo de 32 bits. INET_NTOA() hace lo inverso. Esta herramienta realiza el mismo cálculo, permitiéndote verificar conversiones o calcular valores fuera del contexto de una base de datos.

Herramientas relacionadas

IPparse•Herramientas gratuitas de cálculo de redes y subredes

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

100% Privacy-First • No Data Collected