def _types_bitmap(cls, data, error):
bits = []
o = 0
while o < len(data):
fmt = "!BB"
fmtsz = struct.calcsize(fmt)
dat = data[o:o+fmtsz]
if len(dat) != fmtsz:
e = ("_types_bitmap", o, 'offset out of range: data size = %d' % len(data))
error.append(e)
return None
block, bytes = struct.unpack(fmt, dat)
o += fmtsz
for i in range(bytes):
b = struct.unpack("!B", data[o+i:o+i+1])[0]
for j in range(8):
if b & (1 << (7-j)):
bits.append((block*32+i)*8+j)
o += bytes
return bits
评论列表
文章目录