Python Program to Convert Binary to Hexadecimal
Last Updated :
02 Aug, 2024
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
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
# 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
# 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
# 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
# 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)