- 本篇博客总结了一些python 中进制转换的问题,其中参考了:点击打开链接 这篇博客。
import os ,sys # global definition # base = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F] # base = [str(x) for x in range(10)] + [ chr(x) for x in range(ord('A'),ord('A')+6)] base = [str(x) for x in range(10)] + [ chr(x) for x in range(ord('A'), ord('A')+6)] # print(base) #### ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'] # print(ord('A')) #### 把字符A转为unicode的值 也就是 'A' = 65 # print(chr(65)) #### 把Unicode 值转为 字符 也就是 65 = A # a, b = divmod(65, 2) #### Return the tuple (x//y, x%y) # print(a, b) ### a = 32, b = 1 ### bin to dec 二进制转十进制 def bin2dec(string_num): return str(int(string_num, 2)) # print(bin2dec('00000000000000000000000000001011')) ### hex to dec 十六进制转十进制 def hex2dec(string_num): return str(int(string_num.upper(), 16)) # print(hex2dec('b')) ### dec to bin 十进制转二进制 def dec2bin(string_num): num = int(string_num) mid = [] while True: if num == 0: break num, mod = divmod(num, 2) #### 十进制转为二进制 # num, mod = divmod(num, 16) #### 十进制转为十六进制 # num, mod = divmod(num, 8) #### 十进制转为八进制 mid.append(base[mod]) return ''.join(str(x) for x in mid[::-1]) # print(dec2bin(11)) ### dec to hex 十进制转为十六进制 def dec2hex(string_num): num = int(string_num) mid = [] while True: if num == 0: break # num, mod = divmod(num, 2) #### 十进制转为二进制 num, mod = divmod(num, 16) #### 十进制转为十六进制 # num, mod = divmod(num, 8) #### 十进制转为八进制 mid.append(base[mod]) return ''.join(str(x) for x in mid[::-1]) # print(dec2bin(11)) ### hex to bin 十六进制转二进制 ### 可以等价为,先把十六进制转为十进制, 然后把十进制转为二进制 def hex2bin(string_num): return dec2bin(hex2dec(string_num.upper())) # print(hex2bin("b")) ### bin to hex 二进制转换为十六进制 ### 等价为,先把二进制转为十进制,然后把十进制转为十六进制 def bin2hex(string_num): return dec2hex(bin2dec(string_num)) print(bin2hex('0100'))互相学习,互相讨论