We are given a binary string and need to convert it into a readable text string. The goal is to interpret the binary data, where each group of 8 bits represents a character and decode it into its corresponding text. For example, the binary string '01100111011001010110010101101011' converts to 'geek'. Let's explore different methods to perform this conversion efficiently.
Using list comprehension
This method breaks the binary string into chunks of 8 bits and converts each chunk into a character usingint() andchr()functions. It’s a clean and readable way to convert binary to text and works well for small to medium-length strings.
Pythonb='01100111011001010110010101101011's=''.join(chr(int(b[i:i+8],2))foriinrange(0,len(b),8))print(s)
Explanation:binary stringb is split into 8-bit chunks using a for loop inside a list comprehension. Each chunk is converted from binary to decimal using int(..., 2), then to a character usingchr(...). Finally,join() combines all characters into a single string.
Using int().to_bytes().decode()
In this approach, the whole binary string is first turned into an integer. Then it’s converted to bytes and finally decoded into a string. It’s a fast and compact method, especially useful when dealing with longer binary inputs.
Pythonb='01100011011011110110010001100101's=int(b,2).to_bytes(len(b)//8,'big').decode()print(s)
Explanation: int(b, 2)converts the binary string into an integer..to_bytes(len(b) // 8, 'big') turns it into a byte sequence..decode()then converts the bytes into a readable string.
Using codecs.decode()
This method first converts the binary into a hexadecimal string, then decodes it using the codecs module. It’s handy when working with encoded binary data and gives a bit more control during the conversion process.
Pythonimportcodecsb='01100111011001010110010101101011'hex_string=hex(int(b,2))[2:]iflen(hex_string)%2!=0:hex_string='0'+hex_strings=codecs.decode(hex_string,'hex').decode()print(s)
Explanation: int(b, 2)converts the binary string to an integer. hex(...)[2:] gets its hex representation without the0x prefix. If the hex string has an odd length, a '0' is prepended to ensure proper byte alignment.codecs.decode(..., 'hex') converts the hex to bytes and .decode() converts it to a regular string.
Using for loop
If you prefer a more step-by-step approach, using a simple for loop can help. It processes the binary string 8 bits at a time, converts each part into a character and builds the final string manually.
Pythonb='01100111011001010110010101101011's=''foriinrange(0,len(b),8):s+=chr(int(b[i:i+8],2))print(s)
Explanation: for loop takes each 8-bit chunk (b[i:i+8]), converts it from binary to decimal usingint(..., 2), then changes it to a character usingchr(...). Each character is added to the strings.