Python String to Binary


You must be knowing that computers only understand binary numbers (0 and 1). So, whenever you store a string in a computer, it actually stores the binary code of that string.

In this tutorial, you will learn how to convert a string to binary in Python in 3 different ways.

At the end you will also see a speed comparison between these 2 methods to find out which one is the fastest.


1. Using bin() function

The bin() function converts a given integer to its binary equivalent. For example, bin(10) will return '0b1010'.

So, to convert a string to binary, we need to convert each character to its integer equivalent and then convert that integer to binary.

To get the integer equivalent of a character, we can use the ord() function.

Here is a program to convert a string to binary.

str = "Hello"

# loop over each character in string
# and convert them to binary
for char in str:
    # convert character to integer
    ascii_val = ord(char)
    # convert integer to binary
    binary_val = bin(ascii_val)
    # print the binary value
    print(binary_val, end=" ")

Output:

0b1001000 0b1100101 0b1101100 0b1101100 0b1101111

Note: The bin() function returns a string with '0b' as prefix. So, we have to remove this prefix from the binary value.


2. Using format() function

Issue with the above method is that it returns a string with '0b' as prefix. You have to manually remove this prefix from the binary value.

However, the format() function can be used to convert an integer to binary without the prefix.

Here is a program to convert a string to binary using format() function.

str = "Hello"

binary_str = ""

# loop over each character in string
# and convert them to binary
for char in str:
    # convert character to integer
    ascii_val = ord(char)
    # convert integer to binary
    binary_val = format(ascii_val, "b")
    # append the binary value
    binary_str += binary_val + " "

print(binary_str)

Output:

1001000 1100101 1101100 1101100 1101111

Here, we have used "b" as the second argument to the format() function. This tells the function to convert the integer to binary. To get consistent 8-bit binary values, you can use "08b" as the second argument.


Conclusions

Both the methods discussed above are easy to understand and implement. You can choose any of them to convert a string to binary.

The following image show the speed comparison between these 2 methods.

Python string to binary with speed comparison
Python string to binary with speed comparison

You can see that the format() function is faster than the bin() function.