import argparse def main(): p = argparse.ArgumentParser() p.add_argument('--file', required=True) p.add_argument('--addr', required=True) p.add_argument('--base', type=lambda x: int(x,0), default=0x80000000) p.add_argument('--stride', type=int, default=10) p.add_argument('--field_idx', type=int, default=9) p.add_argument('--count', type=int, default=20) args = p.parse_args() addr = int(args.addr, 0) offset = addr - args.base with open(args.file, 'rb') as f: for ch in range(args.count): idx = offset + ch*args.stride + args.field_idx f.seek(idx) b = f.read(1) if not b: print(f"ch {ch:02d}: EOF") break print(f"ch {ch:02d}: addr {hex(addr + ch*args.stride + args.field_idx)} offset {hex(idx)} value {b[0]:02x} ({b[0]})") if __name__ == '__main__': main()