程式設計實現將乙個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,所以可以...