Um conversor de IP mostra o mesmo endereço em vários formatos: o IPv4 de sempre (192.168.1.1), o número inteiro de 32 bits (3232235777), hexadecimal (0xC0A80101), binário, octal e a forma mapeada em IPv6 (::ffff:192.168.1.1). Com IPv6, ele expande e comprime o endereço segundo a RFC 5952. Tudo roda no seu navegador.
Como usar o conversor
Cole o valor no campo e o formato é detectado automaticamente. Não é preciso escolher o modo de conversão antes:
- IPv4 em decimal pontuado, como
8.8.8.8. - Número inteiro, como
3232235777. Valores acima de 4.294.967.295 (o maior IPv4) são lidos como IPv6. - Hexadecimal com prefixo
0x, inteiro (0xC0A80101) ou por octeto (0xC0.0xA8.0x01.0x01). - Binário de 32 bits, com ou sem pontos entre os octetos.
- IPv6 em qualquer forma válida: comprimida, expandida, com IPv4 no final ou com identificador de zona (
fe80::1%eth0).
Se o valor tiver zeros à esquerda, como 192.168.001.010, a ferramenta não converte sozinha: ela mostra a leitura decimal e a leitura octal lado a lado, e você escolhe qual usar. Endereços com prefixo, como /24, devem ir para a calculadora de sub-rede.
O mesmo endereço em cada formato
Todos os formatos abaixo representam exatamente os mesmos 32 bits. Os que usam 0x ou zero inicial são aceitos por navegadores e por muitos comandos de rede, o que tem consequências de segurança explicadas mais adiante.
| Formato | Valor | Onde aparece |
|---|---|---|
| Decimal pontuado | Valor192.168.1.1 | Onde apareceConfigurações de rede, roteadores, documentação |
| Inteiro de 32 bits | Valor3232235777 | Onde apareceBancos de dados, logs, código |
| Hexadecimal | Valor0xC0A80101 | Onde apareceProgramação, capturas de pacotes |
| Hexadecimal por octeto | Valor0xC0.0xA8.0x01.0x01 | Onde apareceFormas aceitas por inet_aton() e navegadores |
| Binário | Valor11000000.10101000.00000001.00000001 | Onde apareceCálculo de máscaras e sub-redes |
| Octal por octeto | Valor0300.0250.01.01 | Onde apareceRaro; o zero inicial indica base 8 |
| IPv4 mapeado em IPv6 | Valor::ffff:192.168.1.1 | Onde apareceServidores dual-stack e logs |
| Mapeado em hexadecimal | Valor::ffff:c0a8:101 | Onde apareceA mesma forma, só com grupos hexadecimais |
| DNS reverso | Valor1.1.168.192.in-addr.arpa | Onde apareceConsulta PTR do IP reverso |
Como converter à mão
Um IPv4 tem quatro octetos, e cada octeto vale de 0 a 255. Para transformar o endereço em um único número, multiplique cada octeto pela sua posição em base 256:
192.168.1.1 para inteiro
- 1
Primeiro octeto × 16.777.216
192 × 16.777.216 = 3.221.225.472 (16.777.216 é 256 elevado a 3). - 2
Segundo octeto × 65.536
168 × 65.536 = 11.010.048. - 3
Terceiro octeto × 256
1 × 256 = 256. - 4
Some tudo com o último octeto
3.221.225.472 + 11.010.048 + 256 + 1 = 3.232.235.777.
Para voltar, faça o caminho inverso: divida o inteiro por 16.777.216 (o quociente é o primeiro octeto), divida o resto por 65.536, depois por 256, e o que sobrar é o último octeto.
Para o binário, decomponha cada octeto nos pesos 128, 64, 32, 16, 8, 4, 2 e 1: 192 = 128 + 64 vira 11000000, e 168 = 128 + 32 + 8 vira 10101000. O hexadecimal sai do binário agrupando os bits de 4 em 4: 1100 0000 é C0 e 1010 1000 é A8. É por isso que cada octeto sempre cabe em dois dígitos hexadecimais. O quadro “Octeto por octeto” do conversor mostra essa soma para o endereço digitado.
Por que guardar IPs como números inteiros
Um inteiro de 32 bits ocupa 4 bytes e pode ser comparado de uma vez. Para saber se um IP pertence a um bloco, basta verificar se o número está entre o primeiro e o último endereço: a rede 10.10.50.0/24 vai de 168440320 a 168440575, então 10.10.50.25 (168440345) e 10.10.50.99 (168440419) estão dentro dela. O MySQL oferece as funções INET_ATON() e INET_NTOA() para essa conversão, e o PostgreSQL tem os tipos nativos inet e cidr, que aceitam IPv4 e IPv6. Para descobrir os limites de um bloco, use a calculadora de sub-rede; o guia de máscara de sub-rede e CIDR explica a notação.
Zeros à esquerda e endereços disfarçados
Pelas regras herdadas da função inet_aton() do Unix, e adotadas pelos navegadores no padrão de URLs do WHATWG, um octeto que começa com 0 é octal e um que começa com 0x é hexadecimal. Então 010.8.8.8 leva a 8.8.8.8, não a 10.8.8.8. Bibliotecas que ignoravam o zero criaram falhas reais: a CVE-2021-29921 afetou o módulo ipaddress do Python antes da versão 3.9.5, e a CVE-2021-28918 afetou o pacote netmask do npm até a versão 1.0.6. Nos dois casos, um filtro podia aprovar um endereço que outro programa interpretava de forma diferente.
A mesma flexibilidade faz http://3232235777 e http://0xC0A80101 abrirem 192.168.1.1 no navegador. Golpistas já usaram esse truque para esconder o destino de links. Formas abreviadas, como 127.1 no lugar de 127.0.0.1, também são aceitas por alguns sistemas. O conversor recusa essas formas ou pede que você escolha a leitura, para que o resultado nunca dependa de um palpite.
IPv6: expandir, comprimir e a forma canônica
Um IPv6 tem 128 bits, escritos como oito grupos de quatro dígitos hexadecimais separados por dois-pontos. Duas regras encurtam a escrita: os zeros à esquerda de cada grupo podem ser omitidos, e uma sequência de grupos zerados pode ser trocada por :: uma única vez. A RFC 5952 transformou isso em uma forma canônica, que o conversor sempre exibe:
- letras sempre minúsculas;
- nenhum zero à esquerda dentro dos grupos;
::na sequência de zeros mais longa e, em caso de empate, na primeira;- nunca usar
::para um único grupo zerado.
Na prática, 2001:0db8:0000:0000:0000:ff00:0042:8329 vira 2001:db8::ff00:42:8329, e 2001:db8:0:0:1:0:0:1 vira 2001:db8::1:0:0:1, porque as duas sequências têm o mesmo tamanho e vale a primeira. Já 2001:0db8:85a3::8a2e:0370:7334 é válido, mas a forma canônica é 2001:db8:85a3::8a2e:370:7334. Comparar endereços na forma canônica evita que o mesmo IP pareça dois diferentes em planilhas, logs e regras de firewall. A forma expandida, com os 32 dígitos, é útil quando você precisa alinhar endereços ou calcular prefixos à mão.
IPv4 dentro do IPv6: mapeado, NAT64 e 6to4
Alguns blocos IPv6 carregam um IPv4 nos últimos bits, e o conversor identifica e extrai esse endereço:
::ffff:0:0/96(IPv4 mapeado): usado por sistemas operacionais para representar conexões IPv4 em programas que trabalham com IPv6. É o motivo de aparecerem entradas como::ffff:203.0.113.5em logs de servidores.64:ff9b::/96(NAT64): prefixo da RFC 6052 usado por redes só IPv6 para alcançar sites que ainda só têm IPv4. Por regra, ele só deve conter IPv4 públicos, por isso o conversor só mostra essa forma para endereços públicos.2002::/16(6to4): um mecanismo de transição antigo, hoje pouco usado, que embutia o IPv4 logo após os primeiros 16 bits.
Nenhuma dessas formas dá ao seu aparelho um IPv6 de verdade. Para saber se a sua conexão já tem um, use o teste de IPv6, e para entender as diferenças entre os protocolos leia IPv4 vs. IPv6.
DNS reverso: in-addr.arpa e ip6.arpa
O conversor também monta o nome usado na consulta de DNS reverso (registro PTR). No IPv4, os octetos são invertidos e recebem o sufixo in-addr.arpa: 8.8.4.4 vira 4.4.8.8.in-addr.arpa. No IPv6, cada um dos 32 dígitos hexadecimais é invertido, separado por pontos e termina em ip6.arpa. Com esse nome em mãos, a consulta DNS mostra o hostname associado ao IP, e o artigo sobre IP reverso explica para que ele serve, de servidores de e-mail a diagnósticos de rede.

