bin2hex: handle any file length, not just 8 or 4

Treat the input as if it was padded with zeroes to a multiple
of 8. This is needed if the .data in a binary changes size, it
won't be a nice multiple of 4 or 8. At present the microwatt
binaries all are multiples of 8, but making code alterations could make
bin2hex fail unexpectedly.

Signed-off-by: Matt Johnston <matt@codeconstruct.com.au>
pull/409/head
Matt Johnston 2 years ago
parent 84a0fba25d
commit dfecda3a5f

@ -7,11 +7,8 @@ import struct
with open(sys.argv[1], "rb") as f: with open(sys.argv[1], "rb") as f:
while True: while True:
word = f.read(8) word = f.read(8)
if len(word) == 8: if len(word) == 0:
print("%016x" % struct.unpack('Q', word));
elif len(word) == 4:
print("00000000%08x" % struct.unpack('I', word));
elif len(word) == 0:
exit(0); exit(0);
else: if len(word) != 8:
raise Exception("Bad length") word = word + bytes(8 - len(word))
print("%016x" % struct.unpack('Q', word));

Loading…
Cancel
Save