#!/usr/bin/python3
# ====================================================================
# hex dump
# ====================================================================
import os
READ_BYTE_CHUNK = 16
# --------------------------------------------------------------------
# ---- print a chunk of bytes in hex and ascii
# --------------------------------------------------------------------
def print_chunk(idx,byts):
ln = len(byts)
print(f'{idx:08} ',end='')
for i in range(READ_BYTE_CHUNK):
if i < ln:
byt = byts[i]
print(f'{byt:02x} ',end='')
else:
print(' ',end='')
for i in range(READ_BYTE_CHUNK):
if i < ln:
byt = byts[i]
if byt < 32 or byt > 126: # un-printable byte/char
bchr = '.'
else:
bchr = chr(byt)
else:
bchr = ' '
print(bchr,end='')
print()
# --------------------------------------------------------------------
# ---- print title
# --------------------------------------------------------------------
def print_title():
title = '-offset- ' +\
'--------------------- hex ---------------------' +\
' ---- ascii -----'
print(title)
# --------------------------------------------------------------------
# ---- main
# --------------------------------------------------------------------
file_name = './faces/unknown_image.png'
chunks_output = 0
idx = 0
print()
print(f'file name: {file_name}')
print()
print_title()
with open(file_name, mode='rb') as bfile:
## ---- start somewhere in the file - EOF-24
##bfile.seek(-24,os.SEEK_END)
while True:
byts = bfile.read(READ_BYTE_CHUNK)
if len(byts) == 0: break
print_chunk(idx,byts)
idx += READ_BYTE_CHUNK
# ---- limit output for testing
chunks_output += 1
if chunks_output > 3: break