Binary to String/Text in Python

前端 未结 4 1826
耶瑟儿~
耶瑟儿~ 2020-12-09 05:54

I have searched many times online and I have not been able to find a way to convert my binary string variable, X

X = \"100010010001         


        
4条回答
  •  挽巷
    挽巷 (楼主)
    2020-12-09 06:04

    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)
    

提交回复
热议问题