Como converter entre endereços IPv4 e inteiros de 32 bits

Esta página converte um endereço IPv4 com pontos no número sem sinal de 32 bits codificado pelos quatro octetos, e faz o caminho de volta. 192.168.10.1 vira 3232238081 e 3232238081 volta a ser 192.168.10.1.

As duas conversões rodam na aba do navegador e o endereço não é enviado a nenhum servidor. Um valor que não seja um IPv4 com pontos válido ou um número inteiro de 0 a 4294967295 é recusado com uma frase que indica o problema, em vez de virar um resultado errado.

  1. Digite ou cole um endereço IPv4 com pontos, como 192.168.10.1, ou um número inteiro como 3232238081. Carregar exemplo preenche 192.168.10.1.
  2. Clique em IPv4 → inteiro para ler o endereço como número, ou em Inteiro → IPv4 para voltar. A página não adivinha o sentido pelo conteúdo, por isso os botões são separados.
  3. Leia o resultado no segundo campo: um inteiro decimal ou um endereço com pontos, sem zeros de preenchimento nem separadores.
  4. Clique em Copiar resultado para copiar o valor, ou em Limpar para esvaziar os dois campos e começar de novo.
  5. Se a entrada for recusada, a nota acima dos botões indica o motivo: quantidade de octetos, faixa do octeto, zero à esquerda, sinal, ponto decimal, expoente ou valor fora de 0–4294967295.

O que a conversão faz e o que ela recusa

Por que o número corresponde ao endereço

Um endereço IPv4 é um número de 32 bits escrito como quatro octetos decimais. O valor segue a ordem de bytes da rede, então o primeiro octeto é o byte mais significativo: ele é multiplicado por 16.777.216 (256³), o segundo por 65.536, o terceiro por 256 e o último por 1. É assim que 192.168.10.1 chega a 3232238081, e por isso as pontas da faixa são 0.0.0.0 = 0 e 255.255.255.255 = 4294967295.

Bancos de dados e APIs de rede guardam endereços assim porque um único inteiro compara, ordena e indexa melhor do que uma string: ip2long() do PHP e INET_ATON() do MySQL devolvem o mesmo valor mostrado aqui (verificado no servidor que publica esta página). O número é sem sinal; esses mesmos 32 bits lidos como inteiro com sinal seriam negativos a partir de 128.0.0.0 (2147483648).

Entradas aceitas e recusadas

O endereço exige exatamente quatro octetos decimais separados por pontos, cada um de 0 a 255 e sem zeros à esquerda: 192.168.010.1 é recusado porque o zero inicial torna o octeto ambíguo. Três octetos, um quinto octeto, letras ou espaço dentro do valor também são recusados; a forma com cinco octetos 192.168.10.1.5 antes era aceita ignorando a última parte sem avisar.

O número exige dígitos decimais sem sinal, sem ponto decimal e sem expoente: -1, 1.5 e 3.232238081e9 são recusados, assim como qualquer valor acima de 4294967295. A página converte apenas IPv4; endereços IPv6 como ::1, prefixo como /24 e notação hexadecimal ou octal são informados como entrada inválida em vez de interpretados.

Ler e reutilizar o resultado

A saída é simples de propósito: um inteiro decimal sem separador de milhar ou um endereço com pontos sem zeros à esquerda, pronto para colar em SQL, em um arquivo de configuração ou no código. Use Copiar resultado em vez de selecionar o texto à mão; a cópia acontece no navegador e não exige envio de dados.

Como nada é enviado a um servidor, a conversão também funciona com a rede desconectada depois que a página carrega, e o mesmo valor pode ser conferido com ip2long(), INET_ATON() ou inet_aton(). O campo de resultado guarda um valor por vez: cada conversão o substitui e Limpar esvazia os dois campos.

Ferramentas recentes: