超过10进制的先不管了, 搞个十进制以下的,还是比较easy的:
#给定一个某进制的数,转换成另一个进制的数,10进制之内
# 输入一个num,从s_decimal进制转成d_decimal,num,s_decimal,d_decimal都是int类型
def decimal_convert(num,s_decimal,d_decimal):
if s_decimal>10 or d_decimal >10:
print('不能超过十进制')
return
ten_num=convert_to_ten(num,s_decimal)
res=convert_from_ten(ten_num,d_decimal,convert_list=[])
return res
#给定的进制转换成十进制
def convert_to_ten(num,s_decimal):
ten_num=0
str_num=str(num)
length=len(str_num)
for i in range(length):
int_num=int(str_num[i])
ten_num+=int_num*s_decimal**(length-i-1)
print(ten_num)
return ten_num
#十进制转换成指定进制
def convert_from_ten(num,d_decimal,convert_list=[]):
if num<d_decimal:
convert_list.insert(0,str(num))
res=int(''.join(convert_list))
print(res)
return res
quotient=num//d_decimal
remainder=num%d_decimal
convert_list.insert(0,str(remainder))
return convert_from_ten(quotient,d_decimal,convert_list)
if __name__ == '__main__':
# convert_to_ten(10,2)
# convert_from_ten(10,2)
res=decimal_convert(13,11,5)
print(res)
# print('转换结果:%d'%(res))
16进制内:
# coding:utf-8
hex_dict={
0:'0',
1:'1',
2:'2',
3:'3',
4:'4',
5:'5',
6:'6',
7:'7',
8:'8',
9:'9',
10:'a',
11:'b',
12:'c',
13:'d',
14:'e',
15:'f',}
def ten_to_other(num,target_num):
if target_num>16 or target_num<2:
return False
final_str=''
while num>=target_num:
yu=num%target_num
str_yu=hex_dict.get(yu)
final_str=str_yu+final_str
num=num//target_num
last_num=hex_dict.get(num)
final_str=last_num+final_str
print(final_str)
return final_str
if __name__ == '__main__':
ten_to_other(111,11)