Binary To String/Text In Python


Answer :

It looks like you are trying to decode ASCII characters from a binary string representation (bit string) of each character.

You can take each block of eight characters (a byte), convert that to an integer, and then convert that to a character with chr():

>>> X = "0110100001101001" >>> print(chr(int(X[:8], 2))) h >>> print(chr(int(X[8:], 2))) i 

Assuming that the values encoded in the string are ASCII this will give you the characters. You can generalise it like this:

def decode_binary_string(s):     return ''.join(chr(int(s[i*8:i*8+8],2)) for i in range(len(s)//8))  >>> decode_binary_string(X) hi 

If you want to keep it in the original encoding you don't need to decode any further. Usually you would convert the incoming string into a Python unicode string and that can be done like this (Python 2):

def decode_binary_string(s, encoding='UTF-8'):     byte_string = ''.join(chr(int(s[i*8:i*8+8],2)) for i in range(len(s)//8))     return byte_string.decode(encoding) 

To convert bits given as a "01"-string (binary digits) into the corresponding text in Python 3:

>>> bits = "0110100001101001" >>> n = int(bits, 2) >>> n.to_bytes((n.bit_length() + 7) // 8, 'big').decode() 'hi' 

For Python 2/3 solution, see Convert binary to ASCII and vice versa.


Comments

Popular posts from this blog

Are Regular VACUUM ANALYZE Still Recommended Under 9.1?

Can Feynman Diagrams Be Used To Represent Any Perturbation Theory?