当前位置:Gxlcms > Python > Python中不同进制互相转换(二进制、八进制、十进制和十六进制)

Python中不同进制互相转换(二进制、八进制、十进制和十六进制)

时间:2021-07-01 10:21:17 帮助过:25人阅读

在我的印象里面进制互相转换确实是很常见的问题,所以在Python中,自然也少不了把下面这些代码收为util。

这是从网上搜索的一篇也的还可以的Python进制转换,经过验证可以使用。下面贴出它的实现代码:

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # 2/10/16 base trans. wrote by srcdog on 20th, April, 2009
  4. # ld elements in base 2, 10, 16.
  5. import os,sys
  6. # global definition
  7. # base = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F]
  8. base = [str(x) for x in range(10)] + [ chr(x) for x in range(ord('A'),ord('A')+6)]
  9. # bin2dec
  10. # 二进制 to 十进制: int(str,n=10)
  11. def bin2dec(string_num):
  12. return str(int(string_num, 2))
  13. # hex2dec
  14. # 十六进制 to 十进制
  15. def hex2dec(string_num):
  16. return str(int(string_num.upper(), 16))
  17. # dec2bin
  18. # 十进制 to 二进制: bin()
  19. def dec2bin(string_num):
  20. num = int(string_num)
  21. mid = []
  22. while True:
  23. if num == 0: break
  24. num,rem = divmod(num, 2)
  25. mid.append(base[rem])
  26. return ''.join([str(x) for x in mid[::-1]])
  27. # dec2hex
  28. # 十进制 to 八进制: oct()
  29. # 十进制 to 十六进制: hex()
  30. def dec2hex(string_num):
  31. num = int(string_num)
  32. mid = []
  33. while True:
  34. if num == 0: break
  35. num,rem = divmod(num, 16)
  36. mid.append(base[rem])
  37. return ''.join([str(x) for x in mid[::-1]])
  38. # hex2tobin
  39. # 十六进制 to 二进制: bin(int(str,16))
  40. def hex2bin(string_num):
  41. return dec2bin(hex2dec(string_num.upper()))
  42. # bin2hex
  43. # 二进制 to 十六进制: hex(int(str,2))
  44. def bin2hex(string_num):
  45. return dec2hex(bin2dec(string_num))

人气教程排行