how to reading binary data...
marcos at nordesia.org
marcos at nordesia.org
Thu Oct 21 04:07:56 EDT 2004
## I hope this code could help you.
def readLong(fin):
"""Reads next long from file"""
s = fin.read(4)
if len(s) == 0: # test reaching of end of file
raise Exception("END-OF-FILE")
return str2long(s)
# First element of this list, is the index in a 4 byte string of the
most-significative-byte, second is the second most-significative and so
on.
SIGNIFICANCE = [0,1,2,3] # this list is useful when reading bigendian longs
#SIGNIFICANCE = [3,2,1,0] # this list is useful when reading littleendian
longs
def str2long(s):
"""Returns a long, using the first four byte of a string"""
l = 0L # the long we will get
for pos in SIGNIFICANCE: # get each byte in the order specified by the
significance list
if pos < len(s):
c = s[pos]
else: # if we take a byte that is not in byte string (this happens at
the end of file when file length is not multiple of 4.
c = chr(0)
l*=0x100 # shift left 8 bits
l+=ord(c) # add the readed byte at the LSB.
return l
#Testing
fi = open("name-of-file","rb")
run = 1
while run:
try:
print hex(readLong(fi))
except Exception:
run=0
fi.close()
Regards, marcos.
>
> Hello
>
> I opened any particular file with the 'rb' mode that is read binary mode.
> so python will treat the data as a raw data. now i want to read first 4
> bytes only then i will convert the first 4 bytes into long datatype and
> then again read 4 bytes and will do the same.
> But how to set & move the pointer using loop?
> also how to convert into long?
>
> Regards
> Sandeep
>
> --
> http://mail.python.org/mailman/listinfo/python-list
More information about the Python-list
mailing list