Gostaria de formatar uma célula no Microsoft Excel 2007 em hexadecimal, mas não estou descobrindo como fazer isso.
Existe uma maneira integrada de alterar a base de 10 para 16 para uma célula?
Responder1
Conforme mencionado anteriormente, a fórmula =DEC2HEX(A1) é convertida em hexadecimal e DEC2HEX(A1,8) é convertida em hexadecimal com prefixo 0 para denotar 32 bits. Embora adicionar os 0s iniciais torne os números mais legíveis, especialmente se você usar uma fonte de ponto fixo, as versões hexadecimal e decimal podem se confundir quando todos os dígitos do número forem de 0 a 9 (por exemplo, 327701=50015).
Uma melhoria é adicionar o prefixo “0x”. Existem 2 maneiras de fazer isso. ="0x"&DEC2HEX(A1,8) resolverá o problema, mas altera o campo para um campo de texto, de modo que não pode mais ser usado facilmente em fórmulas. Outro método é usar um formato personalizado. Se você aplicar o formato personalizado "0x"@ à célula, o valor da célula ainda poderá ser usado em uma equação. Exemplos:
╔═══╦════════════════╦════════════╦═════ ══════════ ══════════════╦═══════════════╗ ║ ║ A ║ B ║ ║ ║ ╠═══╬════════════════╬════════════╬═════ ══════════ ══════════════╬═══════════════╣ ║ 1 ║ ║ Valor ║ Fórmula correspondente ║ Formato numérico ║ ║ 2 ║ Decimal ║ 11162790 ║ 11162790 ║ Geral ║ ║ 3 ║ Hex ║ AA54A6 ║ =DEC2HEX(B2) ║ Geral ║ ║ 4 ║ 0's iniciais ║ 00AA54A6 ║ =DEC2HEX(B2,8) ║ Geral ║ ║ 5 ║ Texto 0x prefixo ║ 0x00AA54A6 ║ =DEC2HEX(B2,8) ║ "0x"@ ║ ║ 6 ║ Prefixo de texto 0x ║ 0x00AA54A6 ║ ="0x" & DEC2HEX(B2,8) ║ Geral ║ ║ 7 ║ Use B5 ║ AA54A600 ║ =DEC2HEX(HEX2DEC(B5) * 256) ║ Geral ║ ║ 8 ║ Use B5 ║ 0xAA54A600 ║ =DEC2HEX(HEX2DEC(B5) * 256) ║ "0x"@ ║ ║ 9 ║ Tente usar B6 ║ #NUM! ║ =DEC2HEX(HEX2DEC(B6) * 256) ║ Geral ║ ╚═══╩════════════════╩════════════╩═════ ══════════ ══════════════╩═══════════════╝
No entanto, números grandes com dígitos variados ainda podem ser difíceis de ler, por isso gosto de colocar vírgulas em números decimais e "_" em números hexadecimais. Primeiro você precisa obter os 16 bits superiores e inferiores do número. Os 16 bits superiores de um número de 32 bits podem ser recuperados com = INT( A1 / 2^16 ). A divisão por 2 ^ 16 funciona como um deslocamento de 16 bits para a direita, e o INT remove o resto fracionário. MOD pode ser usado para obter os 16 bits inferiores de qualquer número de 32 ou 64 bits; =MOD(A1, 2^16). O MOD efetivamente recupera o restante, que são os 16 bits inferiores. Aqui está uma tabela que mostra isso em ação.
╔═══╦═════════════╦═══════════════╦═════ ══════════ ═════════════════════╦═════════╗ ║ ║ A ║ B ║ ║ ║ ╠═══╬═════════════╬═══════════════╬═════ ══════════ ═════════════════════╬═════════╣ ║ 1 ║ ║ Valor ║ Fórmula correspondente ║ Formato ║ ║ 2 ║ Decimal ║ 3.098.743.209 ║ 3098743209 ║ #,##0 ║ ║ 3 ║ Bytes superiores ║ B8B3 ║ =DEC2HEX(INT( B2/2^16 ), 4) ║ Geral ║ ║ 4 ║ Bytes inferiores ║ 11A9 ║ =DEC2HEX(MOD( B2, 2^16 )) ║ Geral ║ ║ 5 ║ Número completo ║ 0xB8B3_11A9 ║ ="0x" & DEC2HEX(INT( B2/2^16 ), 4) ║ Geral ║ ║ ║ ║ ║ & "_" & DEC2HEX(MOD(B2, 2^16), 4) ║ ║ ╚═══╩═════════════╩═══════════════╩═════ ══════════ ═════════════════════╩═════════╝
Aliás, tenho que agradecer muito ahttps://ozh.github.io/ascii-tables/. Usei esse link para criar as tabelas de texto ASCII. Acabei de copiar a tabela da minha planilha Excel para a seção Entrada e ela criou automaticamente o belo layout de texto Unicode.
Responder2
Se você deseja formatar uma célula para poder digitar um número decimal e exibi-lo automaticamente como um número hexadecimal, isso não é possível. Você pode formatar a célula como texto e inserir números hexadecimais diretamente (mas observe que o Excel não pode usá-los para cálculos) ou usar as funções DEC2HEX()
e HEX2DEC()
para converter entre base 10 e base 16.
Responder3
Se a célula a ser convertida for A1
usada =DEC2HEX(A1)
.
Responder4
=REPT("0",4-LEN(DEC2HEX(B3)))&DEC2HEX(B3)
A fórmula REPT repete o "0" com base no comprimento da string hexadecimal gerada pela conversão de um decimal e no comprimento desejado da string HEX. Neste exemplo, pretendo gerar strings HEX de comprimento 4.
Em seguida, você concatena os zeros iniciais à string HEX real, gerando assim o valor HEX do comprimento desejado.
Vantagens:
- Fácil cópia da fórmula para outra planilha. Com apenas duas referências de células para um valor decimal, B3, para reatribuir.
- Os resultados desta fórmula são tratados como valores HEX pelo Excel. Você também poderia prefixar o "0x", mas não acho necessário.
Nota: Eu uso isso quando estou copiando strings HEX e elas são copiadas em comprimentos variados. Primeiro, gero uma coluna de valores decimais a partir dos valores originais, contra os quais posso executar esta fórmula.