Saltar al contenido

Binario a cadena / texto en Python

Solución:

Parece que está intentando decodificar caracteres ASCII a partir de una representación de cadena binaria (cadena de bits) de cada carácter.

Puede tomar cada bloque de ocho caracteres (un byte), convertirlo en un número entero y luego convertirlo en un carácter con chr():

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

Suponiendo que los valores codificados en la cadena son ASCII, esto le dará los caracteres. Puedes generalizarlo así:

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

Si desea mantenerlo en la codificación original, no necesita descodificar más. Por lo general, convertiría la cadena entrante en un Python Unicode string y eso se puede hacer así (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)

Para convertir los bits dados como una cadena “01” (dígitos binarios) en el texto correspondiente en Python 3:

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

Para la solución Python 2/3, consulte Convertir binario a ASCII y viceversa.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *