Given a binary number, the task is to write a Python program to convert the given binary number into an equivalent hexadecimal number. i.e convert the number with base value 2 to base value 16. In hexadecimal representation we 16 values to represent a number. Numbers 0-9 are expressed by digits 0-9 and 10-15 are represented by characters from A – F.
Example:
Input: 1111 Output: F Input: 110101 Output: 35 Input: 100001111 Output: 10F
Method 1: User-defined Code To Convert Binary to Hexadecimal
Step 1: Input binary number.
Input: 111101111011
Step 2: Divide your binary number into groups of four, starting from right.
111101111011 = (1111)(0111)(1011)
Step 3: Convert one 4-digit group of a binary number to one hexadecimal digit.
(1111)(0111)(1011) = F7B
Below is the Python implementation of the above approach:
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' ) |
Output:
Hexadecimal equivalent of 1111: F Hexadecimal equivalent of 110101: 35 Hexadecimal equivalent of 100001111: 10F Hexadecimal equivalent of 111101111011: F7B
Method 2: First Convert Binary to Decimal and then Decimal to Hexadecimal
Step 1: Input binary number.
Input: 111101111011 = (111101111011)2
Step 2: Convert binary number to decimal number.
(111101111011)2 = (3963)10
Step 3: Convert the above decimal number to a hexadecimal number.
(3963)10 = (F7B)16
Below is the Python implementation of the above approach:
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' ) |
Output:
Hexadecimal equivalent of 1111: F Hexadecimal equivalent of 110101: 35 Hexadecimal equivalent of 100001111: 10F Hexadecimal equivalent of 111101111011: F7B
Method 3: Using Predefined Functions
Example 1: Using int() and hex()
We use int() and hex() to convert a binary number to its equivalent hexadecimal number. Below is the Python implementation using int() and 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' )) |
Output:
0xf 0x35 0x10f 0xf7b
Example 2: Using int() and format()
We use int() and format() to convert a binary number to its equivalent hexadecimal number. Below is the Python implementation using int() and 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' )) |
Output:
f 35 10f f7b
Time Complexity: O(logn)
Space Complexity: O(n)