> Tengo un problema: Necesito leer un fichero cualquiera en formato binario.
> Pero binario en unos y ceros, no el binario en símbolos, como se logra con
> open("fichero","rb"),
Más allá que hay como una confusión con respecto a lo que estás
leyendo o mostrando (vaya uno a saber qué significa "binario en
símbolos"), podés hacer esto para leer un archivo y tener los valores
en 0s y 1s:
Grabamos algo en un archivo de prueba:
>>> f = open('test.txt', 'w')
>>> f.write('123')
>>> f.close()
Leemos y pasamos a bin:
>>> f = open('test.txt')
>>> ''.join(string.zfill(bin(ord(x))[2:],8) for x in f.read())
'001100010011001000110011'
Grabé a propósito '123' para que veas la diferencia entre leer números
y texto: el '1', por ejemplo, no tiene el valor binario '00000001',
sino '00110001', o sea 49, el valor ascii del caracter '1'.
Slds.
--
. Facundo
Blog: http://www.taniquetil.com.ar/plog/
PyAr: http://www.python.org/ar/
_______________________________________________
pyar mailing list py...@python.org.ar
http://listas.python.org.ar/listinfo/pyar
PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
Se refiere a lo que 'ves' cuando abris un binario raw:
>>> f = open('Host.exe','rb')
>>> for i in f:
.... print i
�M��J �NDQ��E��B
[��]� � h @����U���� hv @d�Pd�%��t SVW�e��E�
@3��}��}��� V�P �}��}܉}ĉ}��}��}��}��}��}��}��}��}��}��}��}���x�����h�����X�����H�����8�����(����� �������������������������������������������f9=r�Aj � � @f9���fdž���Wj
�VDR�E�P� � @�� P� � @���NHQj � D @�Ӄ� � ���3�;����f���M�� , @f����jj
�FDP�M�Q� � @�� P� � @3�9FP����f���M�� , @f���j�~P�FHPj �� ���; ���� f�f������3��E�f;����� �VHR�E�P� � @�M���� f�9 �� �]�+Y ;Y r � l @�M��~P+����+y ;y r� l @�M��A �� ��� �k �=� @��P�M�Q� � @�Ӌ�� ������PV�R
-------------------------------------
Martín Cerdeira - Software Developer
[web] http://www.codmacs.blogspot.com/
() ascii ribbon campaign
/\ www.asciiribbon.org
Saludos
Rolfo
El hilo no lo empecé yo, simplemente, hice una interpretación de lo
que el usuario original pudo haber querido decir cuando dijo "binario
en simbolos"
Saludos
> solo falta saber que la función devuelve un binario de un entero en formato
> string agregandole como prefijo el 0b, ejemplo:
>
>>>> bin(34)
> '0b100010'
>>>>
>
> ahora te queda sacar el 0b y formatear en 8 bits la presentación, lo cual es
> una pavada.
No sólo es una pavada, sino que le mostré cómo hacerlo en la primer
respuesta en este hilo...
Teniendo eso en cuenta, ¿cual es el objetivo de este mail?
Slds.
--
. Facundo
> ahora te queda sacar el 0b y formatear en 8 bits la presentación, lo cual es
> una pavada.
No sólo es una pavada, sino que le mostré cómo hacerlo en la primer
respuesta en este hilo...
Teniendo eso en cuenta, ¿cual es el objetivo de este mail?