Tengo una celda que contiene este valor:
0x00006cd2c0306953
y quiero convertirlo en un número.
Lo intenté:
=HEX2DEC(C8)
¿Dónde C8
está la celda que contiene mi valor hexadecimal?
Me sale un error # NUM.
¿Qué estoy haciendo mal?
microsoft-excel
conversion
hexadecimal
Nathan Fellman
fuente
fuente
Respuestas:
Simplemente podrías usar:
len(A1)
te da la longitud de la0x
cuerda. Excluya la longitud de0x
, la cadena restante es el número hexadecimal. Use la función de Excel para obtener el dec.fuente
HEX2DEC
acepta un máximo de diez dígitos hexadecimales. La cadena en la pregunta0x00006cd2c0306953
, tiene 18 caracteres de longitud. Su solución evalúaRIGHT(A1,(LEN(A1)-2))
; 18−2 es 16, por lo queRIGHT(…)
devuelve00006cd2c0306953
, que tiene 16 dígitos de largo. Incluso si quita los ceros a la izquierda, tiene 12 dígitos, que todavía son demasiados. Si puede hacer que esto funcione, describa su configuración. (Es decir, ¿qué versión de Excel está usando? ¿Y hizo algo complicado para que esto funcione?)Como indicó TwiterZX,
Hex2Dec
la entrada está limitada a 10 caracteres y6cd2c0306953
tiene 12 caracteres. Entonces eso no funcionará, pero desarrollemos nuestra propia función para eso. Usando VBA, agregue un Módulo y use el siguiente código (puede necesitar ser ajustado según sus necesidades)En Excel, digamos que la celda A1 contiene
0x00006cd2c0306953
, la fórmula de A2=HexadecimalToDecimal(A1)
dará como resultado1.19652E+14
. Formatee la columna a un número con decimales cero y el resultado será119652423330131
.fuente
HEX2DEC está limitado a 10 caracteres, pero eso no significa que no podamos usarlo. Simplemente utilícelo varias veces, para convertir 10 caracteres a la vez y aplique la potencia apropiada de 2 a cada uso.
[Descargo de responsabilidad: no probado en este momento]
Más tarde: ahora estoy en una hoja de cálculo, lista para probar. Cambia el 3,5 en MID a 3,6. Hmm .. Todavía no está bien.
Resulta que HEX2DEC está trabajando en valores hexadecimales firmados, por lo que el primer término termina siendo negativo. No estoy seguro de por qué, pero aquí está la versión fija que agrega 2 ^ 40 (o 16 ^ 10, ya que estamos trabajando en hexadecimal) para corregir:
Sin embargo, eso solo funciona si el DERECHO (C8,10) resulta ser negativo. Aquí está mi solución general:
Ugggh
fuente
Una forma sucia de realizar esta conversión, sin usar una función (vea este hilo del foro de Excel para eso) es usar esta fórmula para calcular el valor de cada carácter en la cadena, luego sumarlos. Obviamente, esto implica el uso de celdas temporales para descomponer el número:
Suponiendo que coloque estas celdas temporales en las filas 1 a 16, esto funciona mediante la extracción de cada carácter, comenzando desde la derecha, convirtiéndolo en un valor, luego aplicando la potencia relevante de 16. Sume las 16 celdas para obtener su valor.
fuente
16^(ROW() - 1)
es mucho más limpio y fácil de leer quePOWER()
Intenta lo siguiente:
fuente
2^32
?Asegúrese de que su columna que tiene números HEX no tenga 0x. El número HEX debe ser C8, no 0xC8. Espero eso ayude.
fuente
HEX2DEC falla si hay caracteres iniciales o finales no hexadecimales (ABCDEF0123456789). Los espacios son una verdadera mina terrestre porque no son visibles. A menudo, los números hexadecimales, representados como cadenas, en los archivos de registro contienen espacios iniciales y / o finales. Creo que "= HEX2DEC (TRIM (A1)) generalmente solucionará este problema. Sin embargo, algo como" = HEX2DEC (RIGHT (TRIM (A1), 10), puede ser necesario debido a la limitación de 10 caracteres de HEX2DEC.
fuente
Esta función ha cambiado, intente usar
así que sin el número 2 entre HEX y DEC
fuente
,
o;
aquí