Hexadecimal para decimal: fazendo um valor hexadecimal significar algo
O que esta conversão faz
Lê um valor de base 16 e o reescreve em base 10. O hexadecimal é conveniente para a máquina e para quem compara padrões de bits, mas um número decimal é o que você precisa para limites, tamanhos de byte e qualquer coisa que uma pessoa tenha de julgar de relance. Este é o sentido a que você recorre quando uma ferramenta entrega um valor e para de explicar.
Os pesos das posições são potências de 16
Da direita para a esquerda, cada dígito hexadecimal é multiplicado por 1, 16, 256, 4096 e assim por diante. Em 1E90FF o valor é 1 × 16 elevado à quinta mais 14 × 16 elevado à quarta e assim por diante, o que dá 2003199. A conta é a mesma soma ponderada usada em qualquer base; só os pesos mudam, e é por isso que o mesmo método serve também para binário e octal.
Tabela de conversão de hexadecimal para decimal
Valores hexadecimais que aparecem rotineiramente na depuração e no trabalho com web, com seus equivalentes decimais. Os números hexadecimalmente redondos são os que valem memorizar, porque marcam fronteiras de byte e de página.
| Hexadecimal | Decimal |
|---|---|
| 0 | 0 |
| 1 | 1 |
| F | 15 |
| 10 | 16 |
| 7F | 127 |
| A5 | 165 |
| FF | 255 |
| 1000 | 4096 |
| FFFF | 65535 |
| DEADBEEF | 3735928559 |
O que as pessoas realmente decodificam
As três tarefas recorrentes são ler um canal de cor, conferir um endereço de memória contra um limite e transformar um hash truncado em algo comparável. A cor é o exemplo mais amigável: 0x1E90FF se separa em 30, 144 e 255, o que diz que o canal azul está saturado e o vermelho está fraco. A mesma leitura em três passos vale para qualquer valor empacotado, e fica bem mais fácil depois que os bytes estão separados.
Separe o valor antes de converter
Uma cor de seis dígitos ou um endereço longo são mais fáceis de ler em grupos de dois dígitos, porque cada grupo é um byte. Converter o valor inteiro de uma vez serve para obter uma resposta única, mas separar primeiro é o que permite ver qual byte está fora do padrão — e geralmente é essa a pergunta de verdade.
Perguntas frequentes
Como converter hexadecimal em decimal à mão?
Multiplique cada dígito pelo seu valor posicional — 1, 16, 256, 4096 e assim por diante, da direita para a esquerda — e some os resultados. Lembre que A vale 10, B vale 11, até F valendo 15. Para 1E90FF isso dá 1048576 + 917504 + 36864 + 0 + 240 + 15, que é 2003199.
Por que endereços de memória parecem números hexadecimais longos?
Porque eles se alinham naturalmente a fronteiras de byte e de palavra, e os dígitos hexadecimais acompanham essas fronteiras de um jeito que os decimais não acompanham. Dois dígitos hexadecimais são um byte, então os dígitos iniciais de um endereço descrevem sua página e os finais descrevem o deslocamento dentro dela.
Posso colar um valor com o prefixo 0x?
Sim, o prefixo é reconhecido e removido antes da conversão, então um valor copiado direto de um depurador ou de um arquivo-fonte funciona sem edição. Um prefixo que não corresponde à página em que você está é reportado em vez de ignorado em silêncio, o que evita que um valor mal interpretado passe batido.
Qual é o maior valor hexadecimal que posso converter?
Sessenta e quatro bits e bem além disso. Valores no topo dessa faixa passam do que a aritmética de ponto flutuante comum guarda com exatidão, então a conversão roda com inteiros exatos e devolve cada dígito corretamente, em vez da resposta arredondada que uma planilha daria.
Um prefixo de hash tem significado como número?
Aritmeticamente sim, na prática não. Converter os primeiros bytes de um hash em decimal é útil para enxergar padrões ou montar uma comparação em script, mas um hash truncado perdeu a propriedade que o tornava um hash, então não trate a forma decimal como identificador por si só.