python 实现进制转化

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

猜你喜欢

转载自blog.csdn.net/annilingmo/article/details/80647953