Cómo convertir un número decimal a hexadecimal en Python

PythonPythonBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este tutorial de Python, exploraremos el proceso de convertir números decimales a sus equivalentes hexadecimales. Al comprender los fundamentos de los sistemas numéricos decimal y hexadecimal, adquirirás el conocimiento necesario para convertir eficazmente entre estas dos representaciones utilizando Python.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python/BasicConceptsGroup -.-> python/numeric_types("Numeric Types") python/BasicConceptsGroup -.-> python/type_conversion("Type Conversion") python/BasicConceptsGroup -.-> python/python_shell("Python Shell") python/PythonStandardLibraryGroup -.-> python/math_random("Math and Random") python/PythonStandardLibraryGroup -.-> python/os_system("Operating System and System") subgraph Lab Skills python/numeric_types -.-> lab-417960{{"Cómo convertir un número decimal a hexadecimal en Python"}} python/type_conversion -.-> lab-417960{{"Cómo convertir un número decimal a hexadecimal en Python"}} python/python_shell -.-> lab-417960{{"Cómo convertir un número decimal a hexadecimal en Python"}} python/math_random -.-> lab-417960{{"Cómo convertir un número decimal a hexadecimal en Python"}} python/os_system -.-> lab-417960{{"Cómo convertir un número decimal a hexadecimal en Python"}} end

Comprender los números decimales y hexadecimales

Sistema numérico decimal

El sistema numérico decimal es el sistema numérico más utilizado, que utiliza 10 dígitos (0-9) para representar números. En el sistema decimal, el valor de un dígito depende de su posición dentro del número. El dígito más a la derecha representa la unidad, el siguiente dígito a la izquierda representa la decena, y así sucesivamente, con cada dígito sucesivo representando una potencia más alta de 10.

Por ejemplo, el número decimal 1234 se puede descomponer como:
1 (miles) + 2 (cientos) + 3 (decenas) + 4 (unidades) = 1000 + 200 + 30 + 4 = 1234

Sistema numérico hexadecimal

El sistema numérico hexadecimal, también conocido como "hex", es un sistema numérico de base 16 que utiliza 16 dígitos: 0-9 y A-F (donde A representa 10, B representa 11, y así sucesivamente). Los números hexadecimales se utilizan comúnmente en la programación de computadoras y la electrónica digital porque proporcionan una forma compacta de representar datos binarios.

En el sistema hexadecimal, cada dígito representa un valor de 0 a 15, con el dígito más a la derecha representando la unidad, el siguiente dígito a la izquierda representando la dieciseisena, y así sucesivamente, con cada dígito sucesivo representando una potencia más alta de 16.

Por ejemplo, el número hexadecimal 0x1A3F se puede descomponer como:
1 (256s) + 10 (16s) + 3 (unidades) + 15 (unidades) = 256 + 160 + 3 + 15 = 434 (en decimal)

graph TD A[Decimal Number System] --> B[Base 10] B --> C[0-9] A --> D[Hexadecimal Number System] D --> E[Base 16] E --> F[0-9, A-F]

Conversión de números decimales a hexadecimales en Python

Función incorporada hex()

Python proporciona una función incorporada llamada hex() que se puede utilizar para convertir un número decimal a su representación hexadecimal. La función hex() toma un solo argumento, que es el número decimal a convertir, y devuelve la cadena hexadecimal correspondiente, comenzando con el prefijo 0x.

A continuación, se muestra un ejemplo:

decimal_num = 42
hex_num = hex(decimal_num)
print(hex_num)  ## Output: '0x2a'

En este ejemplo, el número decimal 42 se convierte en la cadena hexadecimal '0x2a'.

Conversión manual

Como alternativa, puedes realizar la conversión de decimal a hexadecimal manualmente utilizando las funciones incorporadas de Python y la manipulación de cadenas. Así es como se puede hacer:

def decimal_to_hex(decimal_num):
    hex_digits = "0123456789ABCDEF"
    hex_num = ""

    while decimal_num > 0:
        remainder = decimal_num % 16
        hex_num = hex_digits[remainder] + hex_num
        decimal_num //= 16

    return "0x" + hex_num

decimal_num = 42
hex_num = decimal_to_hex(decimal_num)
print(hex_num)  ## Output: '0x2A'

En este ejemplo, la función decimal_to_hex() toma un número decimal como entrada y devuelve la cadena hexadecimal correspondiente. La función utiliza un bucle while para dividir repetidamente el número decimal entre 16 y agregar el dígito hexadecimal adecuado al resultado.

graph TD A[Decimal Number] --> B[Divide by 16] B --> C[Get Remainder] C --> D[Append Hexadecimal Digit] D --> E[Update Decimal Number] E --> B B --> F[Hexadecimal Number]

Tanto la función incorporada hex() como el enfoque de conversión manual se pueden utilizar para convertir números decimales a sus representaciones hexadecimales en Python.

Aplicación de la conversión hexadecimal en Python

Representación de valores hexadecimales

En Python, puedes representar valores hexadecimales utilizando el prefijo 0x. Esta es una forma común de denotar números hexadecimales en los lenguajes de programación.

hex_num = 0x2A
print(hex_num)  ## Output: 42

En el ejemplo anterior, el número hexadecimal 0x2A se asigna a la variable hex_num, que tiene un valor decimal de 42.

Representación de colores hexadecimales

Una aplicación común de la conversión hexadecimal en Python es la representación de valores de color. En el desarrollo web y la gráfica por computadora, los colores a menudo se representan utilizando códigos hexadecimales, donde cada par de dígitos hexadecimales representa la intensidad de los componentes rojo, verde y azul (RGB).

## Represent a color in hexadecimal
color_hex = 0xFF0000
print(color_hex)  ## Output: 16711680

## Convert hexadecimal color to RGB
red = (color_hex >> 16) & 0xFF
green = (color_hex >> 8) & 0xFF
blue = color_hex & 0xFF
print(f"RGB: ({red}, {green}, {blue})")  ## Output: RGB: (255, 0, 0)

En este ejemplo, el color hexadecimal 0xFF0000 representa el color rojo, que tiene un componente rojo de FF (255 en decimal) y componentes verde y azul de 00 (0 en decimal). El código demuestra cómo extraer los componentes RGB individuales del valor de color hexadecimal.

Hexadecimal en formatos de archivo

La representación hexadecimal también se utiliza comúnmente en formatos de archivo, como archivos de imagen, audio y video, donde se emplea para almacenar metadatos, encabezados y otros datos binarios.

## Read a file in hexadecimal
with open("example.bin", "rb") as file:
    hex_data = file.read().hex()
    print(hex_data)

En este ejemplo, el contenido del archivo example.bin se lee y se convierte en una cadena hexadecimal utilizando la función hex().

Al comprender cómo convertir números decimales a hexadecimales y aplicar la conversión hexadecimal en Python, puedes trabajar con una amplia gama de aplicaciones y formatos de archivo que utilizan esta representación.

Resumen

Al final de este tutorial de Python, tendrás una comprensión sólida de cómo convertir números decimales a sus equivalentes hexadecimales. Esta habilidad es especialmente útil en diversas aplicaciones de programación y ciencias de la computación donde la representación hexadecimal se utiliza comúnmente. Con el conocimiento adquirido, puedes aplicar con confianza este proceso de conversión en tus proyectos de Python.