2012-09-26 17:14:51 +0000 2012-09-26 17:14:51 +0000
27
27

Como formatar uma célula do Microsoft Excel 2007 em hexadecimal?

Gostaria de ter o formato de uma célula no Microsoft Excel 2007 em hexadecimal, mas não estou a descobrir como fazer isto.

Existe alguma forma integrada de mudar a base de 10 para 16 para uma célula?

Respostas (6)

20
20
20
2017-04-20 01:48:01 +0000

Como mencionado anteriormente, a fórmula =DEC2HEX(A1) converte para hex, e DEC2HEX(A1,8) converte para hex com 0 prefixo para denotar 32 bits. Enquanto que a adição dos 0 principais torna os números mais legíveis, especialmente se usar uma fonte de ponto fixo, as versões hexadecimais e decimais podem ser misturadas quando todos os dígitos do número são 0-9 (por exemplo 327701=50015).

Uma melhoria consiste em adicionar o prefixo “0x”. Há 2 maneiras de o fazer. =“0x”&DEC2HEX(A1,8) fará o truque, mas muda o campo para um campo de texto, pelo que já não pode ser facilmente utilizado em fórmulas. Outro método é a utilização de um formato personalizado. Se se aplicar o formato personalizado “0x”@ à célula, então o valor da célula ainda pode ser usado numa equação. Exemplos:

╔═══╦════════════════╦════════════╦═════════════════════════════╦═══════════════╗ ║ ║ A ║ B ║ ║ ║ ╠═══╬════════════════╬════════════╬═════════════════════════════╬═══════════════╣ ║ 1 ║ ║ Value ║ Corresponding Formula ║ Number Format ║ ║ 2 ║ Decimal ║ 11162790 ║ 11162790 ║ General ║ ║ 3 ║ Hex ║ AA54A6 ║ =DEC2HEX(B2) ║ General ║ ║ 4 ║ leading 0's ║ 00AA54A6 ║ =DEC2HEX(B2,8) ║ General ║ ║ 5 ║ Text 0x prefix ║ 0x00AA54A6 ║ =DEC2HEX(B2,8) ║ "0x"@ ║ ║ 6 ║ Text 0x prefix ║ 0x00AA54A6 ║ ="0x" & DEC2HEX(B2,8) ║ General ║ ║ 7 ║ Use B5 ║ AA54A600 ║ =DEC2HEX(HEX2DEC(B5) \* 256) ║ General ║ ║ 8 ║ Use B5 ║ 0xAA54A600 ║ =DEC2HEX(HEX2DEC(B5) \* 256) ║ "0x"@ ║ ║ 9 ║ Try to use B6 ║ #NUM! ║ =DEC2HEX(HEX2DEC(B6) \* 256) ║ General ║ ╚═══╩════════════════╩════════════╩═════════════════════════════╩═══════════════╝

Contudo, números grandes com dígitos variáveis ainda podem ser difíceis de ler, por isso gosto de colocar vírgulas em números decimais e “_"s em números hexadecimais. Primeiro é preciso 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 ). Dividindo por 2^16 actua como um deslocamento direito de 16 bits, e a 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 recupera efectivamente o resto, que é os 16 bits mais baixos. Aqui está uma tabela que mostra isto em acção. ╔═══╦═════════════╦═══════════════╦════════════════════════════════════╦═════════╗ ║ ║ A ║ B ║ ║ ║ ╠═══╬═════════════╬═══════════════╬════════════════════════════════════╬═════════╣ ║ 1 ║ ║ Value ║ Corresponding Formula ║ Format ║ ║ 2 ║ Decimal ║ 3,098,743,209 ║ 3098743209 ║ #,##0 ║ ║ 3 ║ Upper Bytes ║ B8B3 ║ =DEC2HEX(INT( B2/2^16 ), 4) ║ General ║ ║ 4 ║ Lower Bytes ║ 11A9 ║ =DEC2HEX(MOD( B2, 2^16 )) ║ General ║ ║ 5 ║ Full Number ║ 0xB8B3\_11A9 ║ ="0x" & DEC2HEX(INT( B2/2^16 ), 4) ║ General ║ ║ ║ ║ ║ & "\_" & DEC2HEX(MOD(B2, 2^16), 4) ║ ║ ╚═══╩═════════════╩═══════════════╩════════════════════════════════════╩═════════╝


BTW, tenho de dar um grande obrigado a https://ozh.github.io/ascii-tables/ . Utilizei esse link para criar as tabelas de texto ASCII. Acabei de copiar a tabela da minha folha de cálculo Excel para a sua secção Input e ela criou automaticamente o layout de texto unicode agradável.

16
16
16
2012-09-26 17:24:39 +0000

Se quiser formatar uma célula para que possa digitar um número decimal e tê-la automaticamente exibida como um número hexadecimal, então isso não é possível. Pode formatar a célula como texto e introduzir directamente números hexadecimais (mas note que o Excel não os pode utilizar para cálculos), ou utilizar as funções DEC2HEX() e HEX2DEC() para converter entre a base 10 e a base 16.

7
7
7
2012-09-26 17:20:16 +0000

Se a célula a ser convertida for A1 utilizar =DEC2HEX(A1).

4
4
4
2013-12-31 03:16:44 +0000

Se precisar de realizar operações matemáticas sobre números convertidos em hex, primeiro convertê-los em decimais, realizar a operação, depois convertê-los de novo em hex.

Por exemplo, se a célula A1 tiver um número hexadecimal, tal como seria criado a partir desta fórmula:

=DEC2HEX(17)

que seria exibido como 11, e a célula A2 tem fórmula:

=DEC2HEX(165)

que seria apresentado como A5, e pretende adicioná-los juntos, então esta fórmula obteria o resultado desejado:

=DEC2HEX(HEX2DEC(A1)+HEX2DEC(A2))

que seria apresentado como B6

1
1
1
2018-07-25 14:35:12 +0000
=REPT("0",4-LEN(DEC2HEX(B3)))&DEC2HEX(B3)

A fórmula REPT repete o “0” com base no comprimento da cadeia hexagonal que é gerada convertendo-a de uma casa decimal, e o comprimento desejado da cadeia hexagonal. Neste exemplo estou a procurar gerar cadeias HEX de comprimento 4.

Você então concatenou os zeros iniciais à cadeia HEX real, gerando assim o valor HEX do comprimento desejado.

Vantagens:

  1. fácil coping da fórmula para outras folhas de trabalho. Com apenas duas referências de células a um valor decimal, B3, para reatribuir.
  2. Os resultados desta fórmula são tratados como valores HEX por Excel. Também se poderia prefixar o “0x”, mas não o considero necessário.

Nota: utilizo isto quando estou a copiar cadeias HEX e elas são copiadas em comprimentos variáveis. Gero primeiro uma coluna de valores decimais a partir dos valores originais, contra os quais posso depois executar esta fórmula.

0
0
0
2017-01-19 19:55:02 +0000

Aqui está uma solução que encontrei para me certificar de que consigo formatar estes números hexadecimais no formato HTML:

SWITCH(LEN(DEC2HEX(B6)),1,"000"&DEC2HEX(B6),2,"00"&DEC2HEX(B6),3,"0"&DEC2HEX(B6),4,DEC2HEX(B6))