1. 程式人生 > >[Python程式設計]常用進位制轉換的程式碼實現

[Python程式設計]常用進位制轉換的程式碼實現

二進位制轉十進位制

def bin_to_dec(bin_str):
    bin = [int(n) for n in bin_str ]
    dec = [bin[-i - 1] * math.pow(2, i) for i in range(len(bin))]
    return int(sum(dec))

十進位制轉二進位制

def dec_to_bin(dec):
    bin = []
    while dec / 2 > 0:
        bin.append(str(dec % 2))
        dec = dec // 2
    bin
.reverse() return ''.join(bin)

十進位制轉十六進位制

def dec_to_hex(dec):
    hex = []
    while dec / 16 > 0:
        hex.append(dec % 16)
        dec = dec // 16
    hex.reverse()
    return ''.join([chr(n + 55) if n > 9 else chr(n + 48) for n in hex])

十六進位制轉十進位制

def hex_to_dec(hex_str):
    hex
= [ord(n) - 55 if n in list("ABCDEF") else ord(n) - 48 for n in hex_str.upper()] dec = [hex[-i - 1] * math.pow(16, i) for i in range(len(hex))] return int(sum(dec))

二進位制轉十六進位制

#這裡偷懶了~,原本思路是每四位二進位制對應一個十六進位制的數
#例如: 1000 0100 0010 0001(2)=8421(16)
#這裡先呼叫2轉10,再呼叫10轉16
def bin_to_hex(bin_str):
    dec = bin_to_dec(
bin_str) hex = dec_to_hex(dec) return hex

十六進位制轉二進位制

#這裡同樣偷懶了~原本思路是每一個十六進位制的數轉換為四位的二進位制
#例如: 8 4 2 1(16)=1000 0100 0010 0001(2)
#這裡先呼叫16轉10,再呼叫10轉2
def hex_to_bin(hex_str):
    dec = hex_to_dec(hex_str)
    bin = dec_to_bin(dec)
    return bin

測試

#10,16互轉
print(dec_to_hex(33825))
print(hex_to_dec('8421'))
#輸出
8421
33825
#2,10互轉
print(bin_to_dec('11101001'))
print(dec_to_bin(233))
#輸出
233
11101001
#2,16互轉
print(bin_to_hex('11101001001011'))
print(hex_to_bin('3A4B'))
#輸出
3A4B
11101001001011