¿Cómo convertir una cadena binaria a una cadena ASCII en Python?

Hice un pequeño progtwig en Python que lee el binario de un archivo y lo almacena en un archivo de texto, leo el archivo de texto y almacena el binario. Pero, no puedo hacer que el binario funcione … lee los archivos así:

f_bin = open(bin_file,"rb") to_bin_data = f_bin.read() bin_data = bin(reduce(lambda x, y: 256*x+y, (ord(c) for c in to_bin_data), 0)) f_bin.close() 

éste no funciona para mí … Convierte binario a ASCII y viceversa

Algo así como esta página web: http://www.roubaixinteractive.com/PlayGround/Binary_Conversion/Binary_To_Text.asp

Edit: ahora he hecho un largo, si no, script para él, pero gracias por las respuestas

Tomemos la palabra ‘hola’ que es 0110100001100101011011000110110001101111

Para traducir eso a los caracteres podemos usar chr e int (con una base de 2) y algunos cortes de lista …

 ''.join(chr(int(bin_text[i:i+8], 2)) for i in xrange(0, len(bin_text), 8)) 

Si quisiéramos tomar ‘hola’ y convertirlo a binario, podemos usar el formato ord y string …

 ''.join('{:08b}'.format(ord(c)) for c in 'hello') 

Quizás puedas usar funciones incorporadas:

 >>> myString = "hello" >>> ba = bytearray(myString) >>> ba[0] 104 >>> bin(ba[0]) '0b1101000' 

Dividir el 0b :

 >>> bin(ba[0]).split('b')[1] '1101000' 

o

 >>> bin(ba[0])[2:] '1101000' 

¡Espero que puedas resolver tu problema con los fragmentos! 🙂

Yo uso el módulo de estructura:

 import struct buf=struct.unpack('c',to_bin_data) # for one character buf=struct.unpack('s',to_bin_data) # for a string 

edit: perdón, entendí mal la pregunta … Esto funciona para datos binarios, no para cadenas de representación binaria de caracteres.