Python 十進制轉二進制、八進制、十六進制


以下代碼用於實現十進制轉二進制、八進制、十六進制:

# -*- coding: UTF-8 -*-
 
# Filename : test.py
# author by : www.runoob.com
 
# 獲取用戶輸入十進制數
dec = int(input("輸入數字:"))
 
print("十進制數為:", dec)
print("轉換為二進制為:", bin(dec))
print("轉換為八進制為:", oct(dec))
print("轉換為十六進制為:", hex(dec))

執行以上代碼輸出結果為:

python3 test.py 
輸入數字:5
十進制數為:5
轉換為二進制為: 0b101
轉換為八進制為: 0o5
轉換為十六進制為: 0x5

python3 test.py 輸入數字:
12 十進制數為:12 轉換為二進制為: 0b1100 轉換為八進制為: 0o14 轉換為十六進制為: 0xc

 

具體實現

十進制到二進制:

def dec2bin(num):
    l = []
    if num < 0:
        return '-' + dec2bin(abs(num))
    while True:
        num, remainder = divmod(num, 2)
        l.append(str(remainder))
        if num == 0:
            return ''.join(l[::-1])

十進制到八進制:

def dec2oct(num):
    l = []
    if num < 0:
        return '-' + dec2oct(abs(num))
    while True:
        num, remainder = divmod(num, 8)
        l.append(str(remainder))
        if num == 0:
            return ''.join(l[::-1])

十進制到十六進制:

base = [str(x) for x in range(10)] + [ chr(x) for x in range(ord('A'),ord('A')+6)]
def dec2hex(num):
    l = []
    if num < 0:
        return '-' + dec2hex(abs(num))
    while True:
        num,rem = divmod(num, 16)
        l.append(base[rem])
        if num == 0:
            return ''.join(l[::-1])

十進制數轉化成二進制數(float)

while True:
    number=input("請輸入一個正數:(輸入q退出程序)")
    if number in ['q','Q']:
        break
    elif not float(number)>0:
        print("請輸入一個正數(輸入q退出程序):")
    else:
        number=float(number)
        array1=[]
        array2=[]
        integer=int(number)
        floa=number-integer
        while integer!=0:
            array1.append(integer%2)
            integer=integer//2
        else:
            array1.append(0)
        array1.reverse()
        while floa>0.00001:
            array2.append(int(2*floa))
            floa=floa*2-int(floa*2)
        else:
            array2.append(0)
        array1.append(".")
        array=array1+array2
        for x in array:
            print(x,end="")
        print("\n")

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM