import sys import socket import threading # HEX_FILTER = ''.join([(len(repr(chr(i))) == 3) and chr(i) or '.' for i in range(256)]) HEX_FILTER = ''.join([chr(i) if len(repr(chr(i))) == 3 else '.' for i in range(256)]) def hexdump(src, length=16, show=True): if isinstance(src, bytes): src = src.decode() results = list() for i in range(0, len(src), length): word = str(src[i:i+length]) printable = word.translate(HEX_FILTER) hexa = ' '.join([f'{ord(c):02X}' for c in word]) hexwidth = length*3 results.append(f'{i:04x} {hexa:<{hexwidth}} {printable}') if show: for line in results: print(line) else: return results def main(): # print(HEX_FILTER) hexdump('python rocks\n and prixies roll\n', length=8) if __name__ == '__main__': main()