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:
# 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:
# 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().
# 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().
# 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)