def extract_from_offset(dna, offset, level=1): result = "" gen = (dna[i] for i in xrange(offset, len(dna))) for l in xrange(level): gen = consts(gen) gen = nat(gen) for c in gen: if c == 255: result += "<EoL>" break if c in character: result += character[c] else: result += "<" + str(c) + ">" return result
def get_value(dna, offset, type): green_begin = dna.find(green_zone_marker) assert(green_begin > 0) start = green_begin + offset end = start + sizeof[type] print dna[start:end] # ugly abuse of iterator-based nat() iter = (b for b in dna[start:end]) nat_list = list(nat(b for b in iter)) assert(len(nat_list) == 1) result = nat_list[0] #assert(asnat(result, length=sizeof[type]) == dna[start:end]) return result