Eu tenho uma célula que contém este valor:
0x00006cd2c0306953
e eu quero convertê-lo em um número.
Eu tentei:
=HEX2DEC(C8)
Onde C8
está a célula que contém meu valor hexadecimal.
Eu recebo um erro # NUM.
O que estou fazendo de errado?
microsoft-excel
conversion
hexadecimal
Nathan Fellman
fonte
fonte
Respostas:
Você pode simplesmente usar:
len(A1)
fornece o comprimento da0x
corda. Exclua o comprimento de0x
, a sequência restante é o número hexadecimal. Use a função Excel para obter a dec.fonte
HEX2DEC
aceita um máximo de dez dígitos hexadecimais. A sequência na pergunta0x00006cd2c0306953
, tem 18 caracteres. Sua solução avaliaRIGHT(A1,(LEN(A1)-2))
; 18−2 é 16, entãoRIGHT(…)
retorna00006cd2c0306953
, que tem 16 dígitos. Mesmo se você retirar os zeros à esquerda, terá 12 dígitos, o que ainda é muito. Se você conseguir fazer isso funcionar, descreva sua configuração. (Isto é, qual a versão do Excel que você está usando E você faz nada complicado para chegar a este trabalho?)Como o TwiterZX indicou,
Hex2Dec
a entrada é limitada a 10 caracteres e a6cd2c0306953
12 caracteres. Portanto, isso não vai funcionar, mas vamos rolar nossa própria função para isso. Usando o VBA, adicione um módulo e use o código a seguir (pode ser necessário ajustar com base nas suas necessidades)No Excel, digamos que a célula A1 contém
0x00006cd2c0306953
, a fórmula de A2=HexadecimalToDecimal(A1)
resultará em1.19652E+14
. Formate a coluna para um número com zero decimal e o resultado será119652423330131
.fonte
O HEX2DEC é limitado a 10 caracteres, mas isso não significa que não possamos usá-lo. Basta usá-lo várias vezes para converter 10 caracteres por vez e aplicar a potência apropriada de 2 a cada uso.
[Aviso: não testado no momento]
Mais tarde: agora estou em uma planilha, pronta para testar. Altere 3,5 em MID para 3,6. Hmm .. Ainda não está certo.
Acontece que o HEX2DEC está trabalhando em valores hexadecimais assinados, portanto o primeiro termo acaba sendo negativo. Não sei por que, mas aqui está a versão fixa que adiciona 2 ^ 40 (ou 16 ^ 10, como estamos trabalhando em hex) para corrigir:
No entanto, isso só funciona se o DIREITO (C8,10) for negativo. Aqui está minha solução geral:
Ugggh.
fonte
Uma maneira suja de realizar essa conversão, sem usar uma função (consulte este tópico do fórum do Excel para isso) é usar esta fórmula para calcular o valor de cada caractere na string e, em seguida, resumir esses valores. Obviamente, isso envolve o uso de células temporárias para decompor o número:
Supondo que você coloque essas células temporárias nas linhas 1 a 16, isso funciona extraindo cada caractere, começando da direita, convertendo-o em um valor e aplicando a potência relevante de 16. Resuma todas as 16 células para obter seu valor.
fonte
16^(ROW() - 1)
é muito mais limpo e mais fácil de ler do quePOWER()
Tente o seguinte:
fonte
2^32
?Verifique se a sua coluna com números HEX não está tendo 0x. O número HEX deve ser C8, não 0xC8. Espero que ajude.
fonte
HEX2DEC falhará se houver algum caractere não hexadecimal inicial ou final (ABCDEF0123456789). Os espaços são uma mina terrestre real porque não são visíveis. Geralmente, os números hexadecimais, representados como seqüências de caracteres, nos arquivos de log contêm espaços à esquerda e / ou à direita. Acho que "= HEX2DEC (TRIM (A1)) geralmente corrige esse problema. No entanto, algo como" = HEX2DEC (DIREITO (TRIM (A1), 10)) pode ser necessário devido à limitação de 10 caracteres do HEX2DEC.
fonte
Esta função mudou, tente usar
portanto, sem o número 2 entre HEX e DEC
fonte
,
ou;
aqui