Saturday, November 16, 2024
Google search engine
HomeLanguagesPython Program to Convert Binary to Hexadecimal

Python Program to Convert Binary to Hexadecimal

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)

RELATED ARTICLES

Most Popular

Recent Comments