Thread View: pl.comp.lang.python
1 messages
1 total messages
Started by Daniel Mróz
Mon, 01 Feb 2010 13:13
Re: podział wczytanego pliku na bloki zadanej wielkości
Author: Daniel Mróz
Date: Mon, 01 Feb 2010 13:13
Date: Mon, 01 Feb 2010 13:13
62 lines
3133 bytes
3133 bytes
On 28.01.2010, Morfi <jarek.damian@gmail.com> wrote: > Zastanawiam się teraz nad poprawnością mojego myślenia. Jest błędne. > Chodzi o to, iż mam załadować dwa różne pliki bit po bicie, podzielić > je na bloki i wykonywać operacje artymetyczne... > > Właśnie jednak sobie uświadomiłem, iż : > ><plik> > jakistekst ></plik> > > > a =open(plik, 'rb') > b =a.read() > > print b > > zwraca nam literał czyli: > >>> jakistekst > > zamiast ciągu bitów w stylu 0b001010.... lub chociaż str w stylu: > '001010...' file.read() odczytuje *bajty*, nie bity. Bajt jest najmniejszą porcją danych, jaką możesz wyciągnąć przy użyciu metody read(). Bajt to 8 bitów. read(1) odczyta Ci 1 bajt read(4) odczyta Ci 4 bajty read(0.5) wywali Ci błąd (chyba...) read() odczyta Ci wszystkie bajty z pliku. Dane odczytane z pliku są znakami lub ciągami znaków. Jeśli chcesz odczytać wartości liczbowe (ale nie ciągi zer i jedynek!) musisz wiedzieć jakiego typu ma to być wartość (byte, ubyte, int, uint, long, ...). Musisz jeszcze wiedzieć czy dane w pliku są zapisane jako Little Endian czy Big Endian. Da Ci to informację na ilu bajtach ta wartość jest zapisana. Jak będziesz już to wiedział, odczytujesz odpowiednią ilość danych z pliku i przeciągasz to przez struct.unpack() aby uzyskać wartość liczbową (ale nie ciąg zer i jedynek!). > Teraz zastanawiam się, jak z tego wybrnąć. Czyżbym musiał czytać to po > znaku i korzystać z binascii. Jednak binascii nie ogarniam... ponieważ > zgodnie z dokumentacją mogę sobie wybrać, jak binascii ma konwertować > dane: Tak, musisz każdy odczytany bajt zamienić na... nie wiem co potrzebujesz. Ciąg znaków '1' i '0'? Tablicę ośmiu wartości 1 i 0? Nie rozumiem jednak po co Ci to. Jeśli chcesz się bawić w przesuwanie bitów, to robi się to w zupełnie inny sposób. Za dużo django, za mało podstaw programowania i zasad działania systemów komputerowych. Pozdrawiam Beorn -- Daniel 'Beorn' Mróz <beorn@alpha.pl> http://127.0.0.1/beorn [GIT d s:- a-@ C++++ UL++++$ P+ L++++ E--- W+ N+++ o? K- w---] [O- M- V! PS+ PE++ Y+ PGP++ t- 5 X R !tv b+ DI D++ G++ e h*] [ r++ y+ ]
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads