Programa de Python para convertir binario a hexadecimal

Dado un número binario, la tarea es escribir un programa Python para convertir el número binario dado en un número hexadecimal equivalente. es decir convertir el número con valor base 2 a valor base 16. En representación hexadecimal tenemos 16 valores para representar un número. Los números del 0 al 9 se expresan con los dígitos del 0 al 9 y del 10 al 15 con los caracteres de la A a la F.

Ejemplo:

Input:  1111
Output: F

Input: 110101
Output: 35

Input: 100001111
Output: 10F

Método 1: código definido por el usuario para convertir binario a hexadecimal

Paso 1:  Ingrese el número binario.

Input: 111101111011

Paso 2: Divide tu número binario en grupos de cuatro, comenzando desde la derecha. 

111101111011 = (1111)(0111)(1011)

Paso 3: Convierta un grupo de 4 dígitos de un número binario a un dígito hexadecimal. 

(1111)(0111)(1011) = F7B

A continuación se muestra la implementación de Python del enfoque anterior:

Python3

# Python code to convert binary number
# into hexadecimal number
  
# function to convert
# binary to hexadecimal
  
def binToHexa(n):
    bnum = int(n)
    temp = 0
    mul = 1
      
    # counter to check group of 4
    count = 1
      
    # char array to store hexadecimal number
    hexaDeciNum = ['0'] * 100
      
    # counter for hexadecimal number array
    i = 0
    while bnum != 0:
        rem = bnum % 10
        temp = temp + (rem*mul)
          
        # check if group of 4 completed
        if count % 4 == 0:
            
            # check if temp < 10
            if temp < 10:
                hexaDeciNum[i] = chr(temp+48)
            else:
                hexaDeciNum[i] = chr(temp+55)
            mul = 1
            temp = 0
            count = 1
            i = i+1
              
        # group of 4 is not completed
        else:
            mul = mul*2
            count = count+1
        bnum = int(bnum/10)
          
    # check if at end the group of 4 is not
    # completed
    if count != 1:
        hexaDeciNum[i] = chr(temp+48)
          
    # check at end the group of 4 is completed
    if count == 1:
        i = i-1
          
    # printing hexadecimal number
    # array in reverse order
    print("\n Hexadecimal equivalent of {}:  ".format(n), end="")
    while i >= 0:
        print(end=hexaDeciNum[i])
        i = i-1
  
# Driver code
if __name__ == '__main__':
    binToHexa('1111')
    binToHexa('110101')
    binToHexa('100001111')
    binToHexa('111101111011')

Producción:

Hexadecimal equivalent of 1111:  F
Hexadecimal equivalent of 110101:  35
Hexadecimal equivalent of 100001111:  10F
Hexadecimal equivalent of 111101111011:  F7B

Método 2: primero convierta de binario a decimal y luego de decimal a hexadecimal

Paso 1:  Ingrese el número binario.

Input: 111101111011 = (111101111011)2

Paso 2: Convierte un número binario a un número decimal.

(111101111011)2 = (3963)10

Paso 3: Convierta el número decimal anterior a un número hexadecimal.

(3963)10 = (F7B)16

A continuación se muestra la implementación de Python del enfoque anterior:

Python3

# Python program to convert binary number
# into hexadecimal number
  
# Function calculates the decimal equivalent
# to given binary number
def binaryToDecimal(binary):
  
    binary1 = int(binary)
    decimal, i, n = 0, 0, 0
      
    while(binary1 != 0):
        dec = binary1 % 10
        decimal = decimal + dec * pow(2, i)
        binary1 = binary1//10
        i += 1
    return(decimal)
  
# function to convert
# decimal to hexadecimal
def decToHexa(n):
  
    # char array to store
    # hexadecimal number
    hexaDeciNum = ['0'] * 100
  
    # counter for hexadecimal
    # number array
    i = 0
    while(n != 0):
  
        # temporary variable
        # to store remainder
        temp = 0
  
        # storing remainder
        # in temp variable.
        temp = n % 16
  
        # check if temp < 10
        if(temp < 10):
            hexaDeciNum[i] = chr(temp + 48)
            i = i + 1
        else:
            hexaDeciNum[i] = chr(temp + 55)
            i = i + 1
        n = int(n / 16)
  
    # printing hexadecimal number
    # array in reverse order
    j = i - 1
    while(j >= 0):
        print((hexaDeciNum[j]), end="")
        j = j - 1
    print()
  
# function to convert binary to
# hexadecimal
def binToHexa(n):
    decimal = binaryToDecimal(n)
    print("Hexadecimal equivalent of {}: ".format(n))
    decToHexa(decimal)
  
# Driver code
if __name__ == '__main__':
    binToHexa('1111')
    binToHexa('110101')
    binToHexa('100001111')
    binToHexa('111101111011')

Producción:

Hexadecimal equivalent of 1111: 
F
Hexadecimal equivalent of 110101: 
35
Hexadecimal equivalent of 100001111: 
10F
Hexadecimal equivalent of 111101111011: 
F7B

Método 3: Uso de funciones predefinidas

Ejemplo 1: Usar int() y hex()

Usamos int() y hex() para convertir un número binario a su número hexadecimal equivalente. A continuación se muestra la implementación de Python usando int() y hex().

Python3

# Python code to convert from Binary
# to Hexadecimal using int() and hex()
def binToHexa(n):
    
    # convert binary to int
    num = int(n, 2)
      
    # convert int to hexadecimal
    hex_num = hex(num)
    return(hex_num)
  
# Driver code
if __name__ == '__main__':
    print(binToHexa('1111'))
    print(binToHexa('110101'))
    print(binToHexa('100001111'))
    print(binToHexa('111101111011'))

Producción:

0xf
0x35
0x10f
0xf7b

Ejemplo 2: Usar int() y format()

Usamos int() y format() para convertir un número binario a su número hexadecimal equivalente. A continuación se muestra la implementación de Python usando int() y format().

Python3

# Python code to convert from Binary
# to hexadecimal using format()
def binToHexa(n):
    
    # convert binary to int
    num = int(n, 2)
      
    # convert int to hexadecimal
    hex_num = format(num, 'x')
    return(hex_num)
  
# Driver code
if __name__ == '__main__':
    print(binToHexa('1111'))
    print(binToHexa('110101'))
    print(binToHexa('100001111'))
    print(binToHexa('111101111011'))

Producción:

f
35
10f
f7b

Publicación traducida automáticamente

Artículo escrito por shahidedu7 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *