Respostas:
Conforme mencionado anteriormente, a fórmula = DEC2HEX (A1) é convertida em hexadecimal e DEC2HEX (A1,8) é convertida em hexadecimal com o prefixo 0 para indicar 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 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) farão o truque, mas ele altera o campo para um campo de texto, para que não possa mais ser usado com facilidade 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 Formula Fórmula correspondente Format Formato numérico ║ ║ 2 ║ decimal ║ 11162790 ║ 11162790 ║ geral ║ ║ 3 ║ Hex ║ AA54A6 ║ = DEC2HEX (B2) ║ Geral ║ ║ 4 ║ 0s iniciais ║ 00AA54A6 ║ = DEC2HEX (B2,8) ║ Geral ║ ║ 5 ║ Prefixo do texto 0x (0x00AA54A6) = DEC2HEX (B2,8) ║ "0x" @ ║ (6) Texto prefixo 0x (0x00AA54A6) = "0x" e 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 ║ # NÚM! ║ = DEC2HEX (HEX2DEC (B6) * 256) ║ Geral ║ ╚═══╩════════════════╩════════════╩═══════════════ ══════════════╩═══════════════╝
╔═══╦═════════════╦═══════════════╦═══════════════ ═════════════════════╦═════════╗ ║ ║ A ║ B ║ ║ ║ ╠═══╬═════════════╬═══════════════╬═══════════════ ═════════════════════╬═════════╣ ║ 1 ║ Valor Formula 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 Number Número completo ║ 0xB8B3_11A9 ║ = "0x" e DEC2HEX (INT (B2 / 2 ^ 16), 4) ║ Geral ║ ║ ║ ║ ║ & "_" & DEC2HEX (MOD (B2, 2 ^ 16), 4) ╚═══╩═════════════╩═══════════════╩═══════════════ ═════════════════════╩═════════╝
Se você deseja formatar uma célula para poder 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.
Se você precisar executar operações matemáticas em números convertidos em hexadecimal, primeiro converta-os em decimais, execute a operação e depois converta novamente em hexadecimal.
Por exemplo, se a célula A1
tiver um número hexadecimal, como seria criado a partir desta fórmula:
=DEC2HEX(17)
que seria exibido como 11 e cell A2
tem a fórmula:
=DEC2HEX(165)
que seria exibido como A5
e você deseja adicioná-los, essa fórmula obterá o resultado desejado:
=DEC2HEX(HEX2DEC(A1)+HEX2DEC(A2))
que seria exibido como B6
=REPT("0",4-LEN(DEC2HEX(B3)))&DEC2HEX(B3)
A fórmula REPT repete o "0" com base no comprimento da cadeia hexadecimal gerada pela conversão de um decimal e no comprimento desejado da cadeia HEX. Neste exemplo, estou procurando gerar seqüências HEX de comprimento 4.
Em seguida, você concatena os zeros à esquerda na cadeia HEX real, gerando o valor HEX do comprimento desejado.
Vantagens:
Nota: Eu uso isso quando estou copiando seqüências de caracteres HEX e elas são copiadas em comprimentos variados. Primeiro, eu gero uma coluna de valores decimais a partir dos valores originais com os quais posso executar essa fórmula.
Aqui está uma solução que encontrei para garantir que posso formatar esses 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))
DEC2BIN()
que se converte em binário. Para binário largura fixa, uso algo como=TEXT(DEC2BIN(A1), "0000")