Python學習 將N進製數轉換為M進製數

2021-08-20 08:36:06 字數 2868 閱讀 8398

程式設計實現將乙個n進製數轉換成m進製數。

將n進製數轉換為m進製數的乙個直接的方法就是將n進製數首先轉換為十進位制數,再從十進位制數往m進製轉換。這樣相當於把十進位制當做乙個中間狀態來實現n進製到m進製的轉換,很大程度上簡化了問題。

方法一:可實現任意進製轉換

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# name: demo27.py

# author: zhuzhuzhu time:2018/5/29

# connect: [email protected]

# desc : 將n進製數轉換為m進製數

# version:python3

defconversion_num

(num, src, dest):

rtn = ''

# 1、校驗源(n進製)和目標(m進製)是否相同

if src == dest:

rtn = num

# 2、轉成10進製#

if src != 10:

num_str = str(num)

# 將列表翻轉

num_str = num_str[::-1]

exe_num = 0

dec_num = 0

# 從最後一位數開始

for num_char in num_str:

# 十六進製制處理

if num_char == 'a':

num_char = '10'

elif num_char == 'b':

num_char = '11'

elif num_char == 'c':

num_char = '12'

elif num_char == 'd':

num_char = '13'

elif num_char == 'e':

num_char = '14'

elif num_char == 'f':

num_char = '15'

num_int = int(num_char)

if exe_num == 0:

dec_num += num_int

else:

dec_num += src ** exe_num * num_int

exe_num += 1

# 得到給定數字的十進位制形式

num = dec_num

# 3、轉成目標進製

# 判斷目標進製是否為十進位制

if dest == 10:

rtn = num

else:

num = int(num)

while

true:

divisor = num // dest

remainder = num % dest

# 十六進製制處理

if remainder == 10:

remainder = 'a'

elif remainder == 11:

remainder = 'b'

elif remainder == 12:

remainder = 'c'

elif remainder == 13:

remainder = 'd'

elif remainder == 14:

remainder = 'e'

elif remainder == 15:

remainder = 'f'

rtn = str(remainder) + rtn

if divisor <= 0:

break

else:

num = divisor

# 4、處理空的字串

if rtn == '':

rtn = '0'

return rtn

new_num = conversion_num('011', 2, 10)

print(new_num)

方法二:利用python內建函式(僅適用於目標進製為二進位制,八進位制,十六進製制的情況)

def

conversion_num

(num, src, dest):

rtn = ''

# 1、校驗源和目標是否相同

if src == dest:

rtn = num

# 2、轉成10進製

if src != 10:

dec_num = 0

if src == 2:

dec_num = int(num, 2)

elif src == 8:

dec_num = int(num, 8)

elif src == 16:

dec_num = int(num, 16)

num = dec_num

# 3、轉成目標進製

if dest == 10:

rtn = num

else:

if dest == 2:

rtn = bin(num)

elif dest == 8:

rtn = oct(num)

elif dest == 16:

rtn = hex(num)

# 4、處理空的字串

if rtn == '':

rtn = '0'

return rtn

new_num = conversion_num('111111', 2, 16)

print(new_num)

**源自致謝侵刪

將十進位制數M轉換為N進製數

題目描述 給定乙個十進位制數m,以及需要轉換的進製數n。將十進位制數m轉化為n進製數。exp 輸入 輸入為一行,m 32位整數 n 2 n 16 以空格隔開,如7,2。輸出 為每個測試例項輸出轉換後的數,每個輸出佔一行。如果n大於9,則對應的數字規則參考16進製制 比如,10用a表示,等等 如111...

M進製轉換為N進製數

給定乙個十進位制數m,以及需要轉換的進製數n。將十進位制數m轉化為n進製數 輸入為一行,m 32位整數 n 2 n 16 以空格隔開。為每個測試例項輸出轉換後的數,每個輸出佔一行。如果n大於9,則對應的數字規則參考16進製制 比如,10用a表示,等等 比如 輸入 7 2 輸出 111 進製轉換的思路...

將整數n轉換為以b進製的數

題目 編寫乙個函式itob int n,char s,int b 將整數n 轉換為以 b進製的數,儲存到s中。題目分析 對於這個問題,根據進製之間的轉換特點,將十進位制的整數n轉換為其他進製,可以利用模除的方式將其轉換,但是其中有乙個問題 16進製制數中表示0123456789abcdef,所以可以...