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