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