procesamiento - Python cómo leer el binario sin procesar de un archivo?(audio/video/texto)
procesamiento de archivos python (2)
Quiero leer el binario sin formato de un archivo y ponerlo en una cadena. Actualmente estoy abriendo un archivo con el indicador "rb" e imprimiendo el byte, pero aparece como caracteres ASCII (para texto, para archivos de video y audio, está dando símbolos y galimatías). Me gustaría obtener los 0 y 1 crudos si es posible. Esto también debe funcionar para archivos de audio y video, así que simplemente convertir el ascii a binario no es una opción.
file = open(filePath, "rb")
with file:
byte = file.read(1)
print byte
para obtener la representación binaria creo que necesitará importar binascii, entonces:
byte = f.read(1)
binary_string = bin(int(binascii.hexlify(byte), 16))[2:].zfill(8)
o, desglosado:
import binascii
filePath = "mysong.mp3"
file = open(filePath, "rb")
with file:
byte = file.read(1)
hexadecimal = binascii.hexlify(byte)
decimal = int(hexadecimal, 16)
binary = bin(decimal)[2:].zfill(8)
print("hex: %s, decimal: %s, binary: %s" % (hexadecimal, decimal, binary))
dará salida:
hex: 64, decimal: 100, binary: 01100100
Lo que está leyendo ES realmente el contenido "en bruto binario" de su archivo "binario". Por extraño que parezca, los datos binarios no son "0''s y 1''s", sino palabras binarias (aka bytes, cf http://en.wikipedia.org/wiki/Byte ) que tienen un valor entero (base 10) y pueden interpretarse como ascii chars. O como enteros (que es como uno generalmente hace operaciones binarias). O como hexadecimal. Por lo que vale, "texto" es en realidad "datos binarios en bruto" también.
Para obtener una representación "binaria" puede echar un vistazo aquí: Convertir binario a ASCII y viceversa, pero eso no le dará más "datos binarios en bruto" que los que realmente tiene ...
Ahora la pregunta: ¿por qué quieres estos datos como "0 y 1" exactamente?