Converter números entre bases 2–36 e validar dígitos
O número hexadecimal -deadBEEF vira -1PS9WXB na base 36. Informe um número inteiro, diga em que base ele está escrito e escolha qualquer base de destino de 2 a 36; números longos continuam exatos, sem arredondamento. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Número
- -deadBEEF
- Base de origem
- 16
- Base de destino
- 36
- Resultado
- -1PS9WXB
Converter números entre bases reescreve um número inteiro de um sistema de numeração posicional para outro sem mudar seu valor. Informe o número como texto, indique a base de origem e escolha uma base de destino de 2 a 36. O conversor verifica cada dígito antes do cálculo, aceita letras maiúsculas ou minúsculas, preserva o sinal negativo quando ele tem significado e devolve um resultado canônico em maiúsculas. A aritmética de precisão arbitrária mantém entradas longas exatas, em vez de arredondá-las aos limites de um número comum do JavaScript. A operação é determinística, não usa serviço de rede e apresenta números malformados ou bases incompatíveis como erros de entrada.
Descreva corretamente o número original
Comece pela base em que o número fornecido já está escrito. A base define tanto os símbolos disponíveis quanto o valor posicional atribuído a cada posição. A base 2 aceita somente 0 e 1; a base 8 aceita de 0 a 7; a base 10 utiliza de 0 a 9; e a base 16 acrescenta as letras de A a F.
A mesma convenção segue até a base 36, na qual Z vale trinta e cinco. O número pode ter espaços ao redor e um único sinal de mais ou menos no início, mas o corpo precisa conter pelo menos um dígito. Não inclua prefixos de programação como 0x ou 0b, separadores de dígitos, vírgulas, pontos decimais, expoentes ou unidades.
Esses caracteres não fazem parte do alfabeto de números inteiros e são rejeitados. As letras não diferenciam maiúsculas de minúsculas, portanto ff e FF representam o mesmo valor hexadecimal. A validação está vinculada à base declarada: um caractere pode pertencer ao alfabeto geral e ainda ser inválido em uma base específica.
Por exemplo, 19 é válido em decimal, mas inválido em octal, pois essa base não possui o dígito nove.
Entenda como funciona a conversão exata
Primeiro, o conversor avalia a sequência de origem pela regra posicional habitual. Ao avançar da esquerda para a direita, ele multiplica o valor acumulado pela base de origem e soma o valor do próximo dígito. Esse método funciona da mesma forma para binário, decimal, hexadecimal e todas as bases compatíveis entre elas.
Depois que o inteiro exato é recuperado, o conversor expressa sua magnitude na base de destino por divisões repetidas. Cada divisão gera um resto, esse resto seleciona um dígito de destino e a inversão dos restos reunidos produz a representação final. A implementação usa inteiros de precisão arbitrária durante todo o processo.
Assim, evita o arredondamento que pode acontecer quando um identificador longo ou padrão de bits ultrapassa a faixa segura de um número de ponto flutuante. As letras da saída ficam sempre em maiúsculas, zeros iniciais desnecessários desaparecem e qualquer representação de zero se torna exatamente 0. O sinal de menos só é restaurado quando o valor matemático não é zero; por isso, uma entrada como -000 não cria um zero negativo separado.
Não há escolhas aleatórias, valores de relógio, regras regionais, estado salvo, solicitações remotas ou chamadas de modelos. Os mesmos três campos sempre geram a mesma sequência, byte por byte.
Valide e use a sequência retornada com segurança
Uma resposta bem-sucedida contém result como uma string. Mantenha o resultado como texto, pois os dígitos podem incluir letras e um inteiro muito grande talvez não seja representado com exatidão pelo tipo numérico da linguagem que faz a chamada. Trate essa resposta como falha de validação: corrija o campo indicado em vez de reenviar os mesmos dados.
As entradas são limitadas a 4,096 dígitos para manter previsíveis o processamento e o uso de memória. Para uma verificação independente, converta o resultado de volta trocando as bases; a forma canônica pode diferir nos zeros iniciais ou nas maiúsculas, mas o valor matemático deve coincidir.
Casos de uso
Examinar valores de baixo nível
Alterne registradores, máscaras de bits, permissões de arquivos e campos de protocolo entre formatos binário, octal, decimal e hexadecimal.
Encurtar identificadores numéricos
Expresse um identificador decimal longo em base 36 como uma string alfanumérica compacta, mantendo a conversão reversível.
Perguntas frequentes
Quais bases de origem e destino são aceitas?
Cada base deve ser um número inteiro de 2 a 36, inclusive.
Como são escritos os valores de dígito acima de nove?
As letras de A a Z representam os valores de dez a trinta e cinco. A entrada ignora maiúsculas e minúsculas, enquanto a saída usa maiúsculas.
O conversor aceita inteiros negativos ou muito longos?
Sim. Um sinal inicial é aceito, e a precisão arbitrária mantém exatas entradas de até 4,096 dígitos.
Posso digitar um prefixo como 0x ou 0b?
Não. Escolha a base de origem e digite só os dígitos. Prefixos, vírgulas, espaços entre dígitos e pontos decimais não fazem parte do número e são recusados em vez de adivinhados.
Por que meu número é recusado na base 8?
Cada dígito precisa ser menor que a base. O 19 vale em decimal, mas não em octal, porque o octal não tem dígito de valor nove. Confira se a base de origem corresponde à forma como o número foi escrito.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/dev2/base-convert-number \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"number":"101101","source_base":2,"target_base":16}'const res = await fetch("https://api.kit.forhosting.com/dev2/base-convert-number", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"number": "101101",
"source_base": 2,
"target_base": 16
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev2/base-convert-number",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"number": "101101",
"source_base": 2,
"target_base": 16
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev2/base-convert-number", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"number":"101101","source_base":2,"target_base":16}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"number":"101101","source_base":2,"target_base":16}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev2/base-convert-number", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"number": "101101",
"source_base": 2,
"target_base": 16
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev2.base_convert_number",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_digits | 4096 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Descreva corretamente o número original
Coloque a representação original no campo number e a base atual em source_base.
Valide e use a sequência retornada com segurança
Isso torna a saída adequada para identificadores de banco de dados, máscaras de bits, permissões, campos de protocolo, somas de verificação, exercícios e dados de teste. source_base e target_base precisam ser inteiros no intervalo inclusivo de 2 a 36. Uma base ausente, fracionária ou fora desse intervalo, um number que não seja string, um corpo vazio, uma pontuação entre os dígitos ou um dígito cujo valor alcance ou exceda a base de origem gera invalid_input. Conversões individuais podem ser feitas no navegador, e as solicitações automatizadas pela API usam o preço publicado de US$ 0,002 por requisição.
Casos de integração
Criar dados de teste determinísticos
Produza strings esperadas exatas para analisadores, exercícios, verificações de migração e testes de regressão entre linguagens.
Perguntas técnicas
O que ocorre quando um dígito não pertence à base de origem?
A solicitação falha com invalid_input e identifica o dígito incorreto e a base de origem.
Quanto custa uma conversão pela API?
O preço da API é US$ 0,002 por solicitação. Você também pode fazer conversões individuais no navegador.