| 36 | return s2 |
| 37 | |
| 38 | def chexdump(s, st=0, abbreviate=True, stride=16, indent="", print_fn=print): |
| 39 | last = None |
| 40 | skip = False |
| 41 | for i in range(0,len(s),stride): |
| 42 | val = s[i:i+stride] |
| 43 | if val == last and abbreviate: |
| 44 | if not skip: |
| 45 | print_fn(indent+"%08x *" % (i + st)) |
| 46 | skip = True |
| 47 | else: |
| 48 | print_fn(indent+"%08x %s |%s|" % ( |
| 49 | i + st, |
| 50 | " ".join(hexdump(val[i:i+8], ' ').ljust(23) |
| 51 | for i in range(0, stride, 8)), |
| 52 | _ascii(val).ljust(stride))) |
| 53 | last = val |
| 54 | skip = False |
| 55 | |
| 56 | def chexdiff32(prev, cur, ascii=True, offset=0, offset2=None): |
| 57 | assert len(cur) % 4 == 0 |