fork(2) download
  1. import timeit
  2.  
  3.  
  4. def toByteHexArray(n):
  5. string = hex(n)
  6. if len(string) % 2 == 1:
  7. pairs = zip("0"+string[::2], string[1::2])
  8. else:
  9. pairs = zip(string[::2], string[1::2])
  10. return "[0x" + ",0x".join([a + b for a, b in pairs]) + "]"
  11.  
  12.  
  13. def split_bytes(n, as_string=False):
  14. result = []
  15. keep_going = True
  16. while keep_going:
  17. if n >> 8 == 0:
  18. keep_going = False
  19. result.insert(0, hex(n & 0xFF))
  20. n = n >> 8
  21.  
  22. if as_string:
  23. return f'[{",".join(result)}]'
  24.  
  25. return result
  26.  
  27.  
  28. if __name__ == '__main__':
  29. t1 = timeit.timeit("toByteHexArray(0x3E75C28F3E75C28F3E75C28F3E75C28F3E75C28F3E75C28F3E75C28F)", 'from __main__ import toByteHexArray', number=100000)
  30. t2 = timeit.timeit("split_bytes(0x3E75C28F3E75C28F3E75C28F3E75C28F3E75C28F3E75C28F3E75C28F)", 'from __main__ import split_bytes', number=100000)
  31. t3 = timeit.timeit("split_bytes(0x3E75C28F3E75C28F3E75C28F3E75C28F3E75C28F3E75C28F3E75C28F, True)", 'from __main__ import split_bytes', number=100000)
  32. print(t1)
  33. print(t2)
  34. print(t3)
  35.  
Success #stdin #stdout 2.56s 9748KB
stdin
Standard input is empty
stdout
0.42058293521404266
1.0317785665392876
1.0887723676860332