Evo da odgovorim ja i napisem sta sam naucio :) , zbog drugih koje bi ovo interesovalo. Ako progresim gdje u terminologiji, ispravite me.
Kada se fajl otvori za binaran pristup u Pythonu, to se radi ovako:
psy = open("psyfile.psy", 'rb')
Jedan bajt se dobije na jednostavan nacin:
byte = psy.read(1)
Medjutim, da li je taj jedan bajt i citav "broj", zavisi od tipa trazenog podatka. Ono sto ja nisam znao jeste koliko odredjeni tip podataka zauzima prostora u memoriji:
Code:
>>> from ctypes import *
>>> sizeof(c_int)
4
>>> sizeof(c_uint)
4
>>> sizeof(c_ushort)
2
U specifikaciji za vrstu fajla koju citam, jasno se navodi koja vrijednost se cita kojim redom. Tako, ako treba da ucitam vrijdnost za oznaku verzije, koje je tipa int, treba da ucitam 4 bajta (duzina c_int je 4, kao sto je navedeno gore) i da ih pretvorim u... pa recimo... koristan oblik. Npr:
Code:
a = '\x01\x01\x01\x01'
...nije cetiri jedinice, vec:
Code:
>>> struct.unpack("i", a)
(16843009,)
Modul struct zaduzen je za ovu konverziju; citanjem dokumentacije za ovaj modul, kao i ctypes lako se dodje do rjesenje i odgovora koliko se cega cita za odredjeni tip podataka (sizeof(tip_podatka)), a zatim i kako se ti podaci konvertuju (struct.unpack(formatiranje, string)).
To je sva filozofija, a gomila zbunjujucih pitanja u prethodnom postu nastalaje iz nepoznavanja primitivnih c tipova podataka. Srecom, sve je uredno navedeno u Python helpu.