Como funciona a conversão de bases
Todo sistema de numeração posicional representa um valor como a soma dos algarismos multiplicados pelas potências da base. Mudar de base significa reescrever o mesmo valor em relação a uma série de potências diferente.
- Validar o alfabeto de entrada. Cada base aceita um conjunto específico de dígitos. O binário aceita 0 e 1; o octal, 0–7; o decimal, 0–9; o hex, 0–9 e A–F. Um caractere fora do alfabeto escolhido exibe um erro imediato antes de qualquer conversão.
- Analisar o valor. Para valores que cabem em um Number do JavaScript (até 2^53−1), a ferramenta chama
parseInt(text, base). Acima desse limite, ela recorre aoBigIntpara manter a conversão exata em inteiros arbitrariamente grandes. - Renderizar em cada base de destino. O valor analisado é convertido para cada base de saída via
Number.prototype.toString(base)ouBigInt.prototype.toString(base). Os quatro painéis padrão (binário, octal, decimal, hex) e o painel de base personalizada são atualizados em conjunto. - Aplicar formatação. Um botão de prefixo adiciona 0b, 0o ou 0x ao início das saídas binária, octal e hex. O agrupamento de dígitos insere um sublinhado a cada quatro dígitos binários e a cada dois dígitos hex. Um seletor de capitalização define se as letras A–F aparecem em maiúsculas ou minúsculas.
- Sincronização ao vivo entre painéis. Editar qualquer painel dispara uma reconversão com debounce de 100 ms que atualiza os demais painéis. O painel em edição é tratado como fonte de verdade em cada tecla pressionada.
Por que usar um conversor de bases
- Leitura de despejos de memória. Depuradores, desmontadores e visualizadores de core dump exibem endereços e valores de registradores em hex. Traduzi-los para decimal permite compará-los com contagens, tamanhos e deslocamentos reportados em outros pontos do mesmo rastreamento.
- Trabalho com códigos de cores. CSS, ferramentas de design e formatos de imagem expressam cores em triplas hex como #d2511a. Converter cada par para decimal transforma a mesma cor na forma rgb(210, 81, 26) esperada pelo seu seletor de cores ou verificador de acessibilidade.
- Decodificação de permissões de arquivo. Os valores chmod do Unix são escritos em octal: 755 significa rwxr-xr-x quando cada dígito octal é traduzido para seus três bits binários. O conversor mostra esse mapeamento em uma etapa, sem precisar consultar um manual.
- Depuração de flags de bit. Protocolos de rede, syscalls do kernel e registradores de hardware concentram muitos flags booleanos em um único inteiro. Ler o inteiro em binário mostra imediatamente quais bits estão ativos, o que é essencial para investigar por que um flag não está surtindo efeito.
Aplicações comuns
A conversão de bases aparece no trabalho diário de desenvolvedores, segurança e hardware sempre que um número é mais do que uma simples contagem.
- Firmware embarcado: leia um dump hex de uma sonda JTAG, encontre o endereço de uma função e escreva um comando de breakpoint usando o deslocamento decimal aceito pelo seu script de depurador.
- Segurança de redes: converta uma máscara de rede de 32 bits em decimal pontilhado de volta para binário para contar o comprimento do prefixo e, em seguida, escreva a forma CIDR para uma regra de ACL.
- Desafios CTF e de criptografia: alterne entre hex, decimal e binário ao comparar um fragmento de chave vazada com um texto simples candidato sob XOR.
Um exemplo prático
Digite 255 no painel decimal. O painel hex é atualizado para FF (ou 0xFF com o prefixo ativado), o painel binário para 11111111 (agrupado como 1111_1111) e o painel octal para 377. Altere a base do painel personalizado para 36 e o mesmo valor aparece como 73. Digite um valor muito maior como 123456789012345678901234567890 no painel decimal; o painel hex usa o caminho BigInt e renderiza 18EE90FF6C373E0EE4E3F0AD2.
FAQ
O que é uma base numérica?
Uma base numérica, ou radix, é a quantidade de dígitos distintos que um sistema posicional utiliza antes de realizar um carry para a próxima posição. O decimal (base 10) usa 0–9; o binário (base 2) usa apenas 0 e 1; o hexadecimal (base 16) usa 0–9 mais A–F. O valor de um número não muda ao trocar de base — apenas a forma como seus dígitos são escritos e agrupados.
Por que usar hexadecimal na programação?
Um dígito hex corresponde exatamente a quatro bits binários, então dois dígitos hex cobrem um byte e oito dígitos hex cobrem uma palavra de 32 bits. Isso torna o hex a forma mais compacta e legível para endereços de memória, conteúdos de registradores, triplas de cores e chaves criptográficas. Ler 0xFF é mais rápido do que ler 11111111, e o padrão de bits está logo ali quando você precisar.
Posso converter além da base 36?
Esta ferramenta limita-se à base 36 porque esse é o limite superior das APIs nativas do JavaScript parseInt e toString, que aceitam 0–9 seguido de A–Z como alfabeto de dígitos. Bases de 37 a 62 são possíveis com um alfabeto personalizado (Base58 usada em endereços Bitcoin é um exemplo), mas são tratadas como uma ferramenta separada, pois cada base superior precisa de sua própria ordem canônica de dígitos.
Esta ferramenta suporta números negativos e decimais?
Inteiros negativos são renderizados com um sinal de menos à frente em todas as bases, seguindo o comportamento padrão de Number.prototype.toString. A representação em complemento de dois para uma largura de bit escolhida (8, 16, 32, 64) é uma visualização separada que planejamos adicionar. A conversão de bases para ponto flutuante também está fora do escopo desta versão; a ferramenta trata apenas valores inteiros.
A conversão de bases é uma tarefa simples que surge repetidamente em firmware, segurança e trabalho com gráficos. Realizá-la em uma aba do navegador, com as mesmas primitivas aritméticas do Node e do V8, mantém o trabalho rápido e os dados na sua máquina.