- 本篇博客总结了一些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'))
互相学习,互相讨论