piapia123
es

IP a entero

Web

Todo se ejecuta en tu navegador: no se sube nada

Entrada
Arrastra un archivo aquí para cargarlo
Resultado

Convierte una dirección IP a sus formas enteras y al revés, en ambos sentidos: escribe `192.168.1.1` para obtener sus lecturas numéricas, o `3232235777` para obtener la dirección. ¿Y por qué merece la pena una herramienta para esto? Porque guardar una IP como entero es práctica estándar en bases de datos: 4 bytes en vez de 15, y las consultas por rango funcionan directamente. De modo que todo el que ha construido una tabla así se topa con la misma pregunta: ¿por qué sale negativa? La respuesta es que una columna `INT` de MySQL es con signo: `192.168.1.1` se guarda como `-1062731519`. Por eso las lecturas sin signo y con signo se muestran en dos filas separadas; la de signo no es relleno, es lo que mucha gente ha venido a buscar. ⚠️ El sentido inverso no adivina: escribir `-1` da un error en vez de convertirse en silencio en `255.255.255.255`. Qué dirección es depende de cómo se guardó, y adivinar mal te deja una regla de cortafuegos equivocada. IPv6 se trata como un valor completo de 128 bits (la fila decimal es larga, pero exacta): guardar 128 bits en un número normal pierde dígitos en silencio y produce una dirección que parece plausible y es falsa.

Funciones

  • Los dos sentidos, con detección automática y anulación manual
  • Sin signo y con signo en filas separadas: la respuesta directa a «por qué sale negativo en mi base de datos»
  • Decimal con puntos, hexadecimal y binario (opcional) de una vez
  • Para IPv6 mapeada de IPv4 (`::ffff:192.168.1.1`) también se muestra la IPv4 incrustada
  • Nombre de resolución inversa (`1.1.168.192.in-addr.arpa`)
  • IPv6 usa enteros exactos de 128 bits; por encima de 128 bits da error en vez de dar la vuelta
  • La entrada negativa da error en lugar de adivinar el complemento a dos
  • Todo se calcula en tu dispositivo

Cómo se usa

  1. Pega una dirección IP o un entero a la izquierda
  2. El sentido se detecta solo; anúlalo si quieres
  3. El resultado aparece al instante; cada fila se copia por separado

Preguntas frecuentes

¿Por qué la IP que sale de mi base de datos es negativa?
Porque esa columna es un entero con signo. Un `INT` de MySQL es de 32 bits con signo, con un rango de unos ±2.100 millones; `192.168.1.1` vale 3232235777 sin signo, que pasa el límite positivo y por eso se muestra como `-1062731519` en complemento a dos. Los datos están bien: son los mismos bits leídos al revés. Para arreglarlo, cambia la columna a `INT UNSIGNED`, o haz un `CAST` al leerla. Aquí se muestran las dos lecturas en paralelo para que puedas cuadrarlas de un vistazo.
¿Qué ventaja tiene guardar las IP como enteros?
Dos cosas: espacio (4 bytes en vez de 15, y el índice se reduce con ello) y consultas por rango. La segunda importa más. Con cadenas, «encuentra todos los registros dentro de 192.168.0.0/16» obliga a un `LIKE` sobre el patrón `192.168.%`, que además coincide con cosas como `192.168.0.1.example.com` y no puede usar el índice. Guardada como entero es solo `WHERE ip BETWEEN 3232235520 AND 3232301055`, y el índice funciona.
¿Por qué no se puede convertir `-1`? Si es obviamente `255.255.255.255`.
Con tu esquema de almacenamiento lo es, pero esta herramienta no sabe cuál usas. El mismo `-1` se lee como `255.255.255.255` con signo de 32 bits, como `18446744073709551615` sin signo de 64 bits, y como otro número distinto con precisión arbitraria. Adivinar mal una IP puede significar una regla de cortafuegos equivocada o un registro que no querías permitir. Por eso aquí se da un error y se muestran las dos lecturas, con y sin signo: un vistazo a tu esquema te dice cuál es.

Herramientas relacionadas