import timeit
def toByteHexArray(n):
string = hex(n)
if len(string) % 2 == 1:
pairs = zip("0"+string[::2], string[1::2])
else:
pairs = zip(string[::2], string[1::2])
return "[0x" + ",0x".join([a + b for a, b in pairs]) + "]"
def split_bytes(n, as_string=False):
result = []
keep_going = True
while keep_going:
if n >> 8 == 0:
keep_going = False
result.insert(0, hex(n & 0xFF))
n = n >> 8
if as_string:
return f'[{",".join(result)}]'
return result
if __name__ == '__main__':
t1 = timeit.timeit("toByteHexArray(0x3E75C28F3E75C28F3E75C28F3E75C28F3E75C28F3E75C28F3E75C28F)", 'from __main__ import toByteHexArray', number=100000)
t2 = timeit.timeit("split_bytes(0x3E75C28F3E75C28F3E75C28F3E75C28F3E75C28F3E75C28F3E75C28F)", 'from __main__ import split_bytes', number=100000)
t3 = timeit.timeit("split_bytes(0x3E75C28F3E75C28F3E75C28F3E75C28F3E75C28F3E75C28F3E75C28F, True)", 'from __main__ import split_bytes', number=100000)
print(t1)
print(t2)
print(t3)
aW1wb3J0IHRpbWVpdAoKCmRlZiB0b0J5dGVIZXhBcnJheShuKToKICAgIHN0cmluZyA9IGhleChuKSAKICAgIGlmIGxlbihzdHJpbmcpICUgMiA9PSAxOgogICAgICAgIHBhaXJzID0gemlwKCIwIitzdHJpbmdbOjoyXSwgc3RyaW5nWzE6OjJdKQogICAgZWxzZToKICAgICAgICBwYWlycyA9IHppcChzdHJpbmdbOjoyXSwgc3RyaW5nWzE6OjJdKQogICAgcmV0dXJuICJbMHgiICsgIiwweCIuam9pbihbYSArIGIgZm9yIGEsIGIgaW4gcGFpcnNdKSArICJdIgoKCmRlZiBzcGxpdF9ieXRlcyhuLCBhc19zdHJpbmc9RmFsc2UpOgogICAgcmVzdWx0ID0gW10KICAgIGtlZXBfZ29pbmcgPSBUcnVlCiAgICB3aGlsZSBrZWVwX2dvaW5nOgogICAgICAgIGlmIG4gPj4gOCA9PSAwOgogICAgICAgICAgICBrZWVwX2dvaW5nID0gRmFsc2UKICAgICAgICByZXN1bHQuaW5zZXJ0KDAsIGhleChuICYgMHhGRikpCiAgICAgICAgbiA9IG4gPj4gOAoKICAgIGlmIGFzX3N0cmluZzoKICAgICAgICByZXR1cm4gZidbeyIsIi5qb2luKHJlc3VsdCl9XScKICAgIAogICAgcmV0dXJuIHJlc3VsdAoKCmlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICB0MSA9IHRpbWVpdC50aW1laXQoInRvQnl0ZUhleEFycmF5KDB4M0U3NUMyOEYzRTc1QzI4RjNFNzVDMjhGM0U3NUMyOEYzRTc1QzI4RjNFNzVDMjhGM0U3NUMyOEYpIiwgJ2Zyb20gX19tYWluX18gaW1wb3J0IHRvQnl0ZUhleEFycmF5JywgbnVtYmVyPTEwMDAwMCkKICAgIHQyID0gdGltZWl0LnRpbWVpdCgic3BsaXRfYnl0ZXMoMHgzRTc1QzI4RjNFNzVDMjhGM0U3NUMyOEYzRTc1QzI4RjNFNzVDMjhGM0U3NUMyOEYzRTc1QzI4RikiLCAnZnJvbSBfX21haW5fXyBpbXBvcnQgc3BsaXRfYnl0ZXMnLCBudW1iZXI9MTAwMDAwKQogICAgdDMgPSB0aW1laXQudGltZWl0KCJzcGxpdF9ieXRlcygweDNFNzVDMjhGM0U3NUMyOEYzRTc1QzI4RjNFNzVDMjhGM0U3NUMyOEYzRTc1QzI4RjNFNzVDMjhGLCBUcnVlKSIsICdmcm9tIF9fbWFpbl9fIGltcG9ydCBzcGxpdF9ieXRlcycsIG51bWJlcj0xMDAwMDApCiAgICBwcmludCh0MSkKICAgIHByaW50KHQyKQogICAgcHJpbnQodDMpCg==