Respuestas:
Como se mencionó anteriormente, la fórmula = DEC2HEX (A1) se convierte en hexadecimal, y DEC2HEX (A1,8) se convierte en hexadecimal con 0 prefijo para denotar 32 bits. Si bien agregar los 0 iniciales hace que los números sean más legibles, especialmente si usa una fuente de punto fijo, las versiones hexadecimal y decimal pueden confundirse cuando todos los dígitos del número son 0-9 (por ejemplo, 327701 = 50015).
Una mejora es agregar el prefijo "0x". Hay 2 formas de hacer esto. = "0x" y DEC2HEX (A1,8) harán el truco, pero cambia el campo a un campo de texto, por lo que ya no se puede usar fácilmente en las fórmulas. Otro método es usar un formato personalizado. Si aplica el formato personalizado "0x" @ a la celda, el valor de la celda aún puede usarse en una ecuación. Ejemplos:
╔═══╦════════════════╦════════════╦═══════════════ ══════════════╦═══════════════╗ ║ ║ A ║ B ║ ║ ║ ╠═══╬════════════════╬════════════╬═══════════════ ══════════════╬═══════════════╣ ║ 1 ║ ║ Valor ║ Fórmula correspondiente ║ Formato de número ║ ║ 2 ║ Decimal ║ 11162790 ║ 11162790 ║ General ║ ║ 3 ║ Hex ║ AA54A6 ║ = DEC2HEX (B2) ║ General ║ ║ 4 ║ ceros a la izquierda ║ 00AA54A6 ║ = DEC2HEX (B2,8) ║ General ║ ║ 5 ║ Texto 0x prefijo ║ 0x00AA54A6 ║ = DEC2HEX (B2,8) ║ "0x" @ ║ ║ 6 ║ Texto 0x prefijo ║ 0x00AA54A6 ║ = "0x" y DEC2HEX (B2,8) ║ General ║ ║ 7 ║ Use B5 ║ AA54A600 ║ = DEC2HEX (HEX2DEC (B5) * 256) ║ General ║ ║ 8 ║ Use B5 ║ 0xAA54A600 ║ = DEC2HEX (HEX2DEC (B5) * 256) ║ "0x" @ ║ ║ 9 ║ ¡Intenta usar B6 ║ #NUM! ║ = DEC2HEX (HEX2DEC (B6) * 256) ║ General ║ ╚═══╩════════════════╩════════════╩═══════════════ ══════════════╩═══════════════╝
╔═══╦═════════════╦═══════════════╦═══════════════ ═════════════════════╦═════════╗ ║ ║ A ║ B ║ ║ ║ ╠═══╬═════════════╬═══════════════╬═══════════════ ═════════════════════╬═════════╣ ║ 1 ║ ║ Valor ║ Fórmula correspondiente ║ Formato ║ ║ 2 ║ Decimal ║ 3,098,743,209 ║ 3098743209 ║ #, ## 0 ║ ║ 3 ║ Bytes superiores ║ B8B3 ║ = DEC2HEX (INT (B2 / 2 ^ 16), 4) ║ General ║ ║ 4 ║ Bytes inferiores ║ 11A9 ║ = DEC2HEX (MOD (B2, 2 ^ 16)) ║ General ║ ║ 5 ║ Número completo ║ 0xB8B3_11A9 ║ = "0x" y DEC2HEX (INT (B2 / 2 ^ 16), 4) ║ General ║ ║ ║ ║ ║ & "_" y DEC2HEX (MOD (B2, 2 ^ 16), 4) ║ ║ ╚═══╩═════════════╩═══════════════╩═══════════════ ═════════════════════╩═════════╝
Si desea formatear una celda para poder escribir un número decimal y mostrarlo automáticamente como un número hexadecimal, entonces eso no es posible. Puede formatear la celda como texto e ingresar números hexadecimales directamente (pero tenga en cuenta que Excel no puede usarlos para los cálculos), o usar las funciones DEC2HEX()
y HEX2DEC()
para convertir entre la base 10 y la base 16.
Si la celda a convertir es A1
usar =DEC2HEX(A1)
.
="0x"&DEC2HEX(A1,4)
para obtener un resultado similar a este 0x1AF2
.
Si necesita realizar operaciones matemáticas en números convertidos a hexadecimal, primero conviértalos a decimal, realice la operación y luego vuelva a convertir a hexadecimal.
Por ejemplo, si la celda A1
tiene un número hexadecimal, como se crearía a partir de esta fórmula:
=DEC2HEX(17)
que se mostrará como 11, y la celda A2
tiene la fórmula:
=DEC2HEX(165)
que se mostrará como A5
, y desea agregarlos juntos, entonces esta fórmula obtendría el resultado deseado:
=DEC2HEX(HEX2DEC(A1)+HEX2DEC(A2))
que se mostraría como B6
=REPT("0",4-LEN(DEC2HEX(B3)))&DEC2HEX(B3)
La fórmula REPT repite el "0" en función de la longitud de la cadena hexadecimal que se genera al convertirla desde un decimal y la longitud deseada de la cadena HEX. En este ejemplo, estoy buscando generar cadenas HEX de longitud 4.
Luego concatena los ceros a la cadena HEX real, generando así el valor HEX de la longitud deseada.
Ventajas:
Nota: Utilizo esto cuando estoy copiando cadenas HEX y se copian a diferentes longitudes. Primero genero una columna de valores decimales a partir de los valores originales con los que puedo ejecutar esta fórmula.
Aquí hay una solución que encontré para asegurarme de que puedo formatear estos números hexadecimales en formato HTML:
SWITCH(LEN(DEC2HEX(B6)),1,"000"&DEC2HEX(B6),2,"00"&DEC2HEX(B6),3,"0"&DEC2HEX(B6),4,DEC2HEX(B6))
DEC2BIN()
que convierte a binario. Para binarios de ancho fijo, use algo como=TEXT(DEC2BIN(A1), "0000")