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

26

Eu gostaria de um formato de uma célula no Microsoft Excel 2007 em hexadecimal, mas não estou achando como fazer isso.

Existe uma maneira interna de alterar a base de 10 para 16 para uma célula?

    
por WilliamKF 26.09.2012 / 19:14

6 respostas

13

Como mencionado anteriormente, a fórmula = DEC2HEX (A1) converte em hexadecimal, e DEC2HEX (A1,8) converte em hexadecimal com prefixo 0 para representar 32 bits. Embora a adição dos 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 misturar quando todos os dígitos do número forem 0-9 (por exemplo, 327701 = 50015).

Uma melhoria é adicionar o prefixo "0x". Existem duas maneiras de fazer isso.="0x" e o DEC2HEX (A1,8) fará o truque, mas altera o campo para um campo de texto, pelo que já não pode ser utilizado 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 ║                ║ 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       ║
╚═══╩════════════════╩════════════╩═════════════════════════════╩═══════════════╝

  No entanto, números grandes com dígitos variados ainda podem ser difíceis de ler, então eu gosto de colocar vírgulas em números decimais e "_" s 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 age como um deslocamento à direita de 16 bits e o INT remove o resto fracionário. MOD pode ser usado para obter os 16 bits mais baixos de qualquer número de 32 ou 64 bits; = MOD (A1, 2 ^ 16). O MOD efetivamente obtém o restante de volta, que é o menor de 16 bits. Aqui está uma tabela que mostra isso em açã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 que agradecer muito ao link . Eu usei esse link para criar as tabelas de texto ASCII. Acabei de copiar a tabela da minha planilha do excel para sua seção de entrada e ela criou automaticamente o belo layout de texto unicode.     
por 20.04.2017 / 03:48
16

Se você deseja formatar uma célula para que possa digitar um número decimal e exibi-la 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 a base 10 e a base 16.

    
por 26.09.2012 / 19:24
7

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

    
por 26.09.2012 / 19:20
4

Se você precisar executar operações matemáticas em números convertidos em hexadecimais, primeiro converta-os em decimal, realize a operação e, em seguida, converta novamente em hexadecimal.

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 exibido como A5 e você deseja adicioná-los juntos, essa fórmula obteria o resultado desejado:

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

que seria exibido como B6

    
por 31.12.2013 / 04:16
1
=REPT("0",4-LEN(DEC2HEX(B3)))&DEC2HEX(B3)

A fórmula REPT repete o "0" com base no tamanho da string hexadecimal que é gerada pela conversão de um decimal e o tamanho desejado da string HEX. Neste exemplo, estou procurando gerar sequências HEX de comprimento 4.

Você então concatena os zeros à esquerda da string HEX, gerando assim o valor HEX do tamanho desejado.

Vantagens:

  1. Fácil de lidar com a fórmula para outra planilha. Com apenas duas referências de célula para um valor decimal, B3, para reatribuir.
  2. Os resultados dessa fórmula são tratados como valores HEX pelo Excel. Você também pode 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 dos valores originais com os quais posso executar essa fórmula.

    
por 25.07.2018 / 16:35
0

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

SWITCH(LEN(DEC2HEX(B6)),1,"000"&DEC2HEX(B6),2,"00"&DEC2HEX(B6),3,"0"&DEC2HEX(B6),4,DEC2HEX(B6))
    
por 19.01.2017 / 20:55