题目描述: 给你一个十进制数a,将它转换成b进制数,如果b>10,用大写字母表示(10用A表示,等等)a为32位整数,2 <= b <= 16。 如a=3,b = 2, 则输出11
示例:
输入:a = 7 b = 2 输出:111
分析: 进制转换,进制转换是还是比较简单的一个问题,然后有一个点需要注意,那就是负数的问题,这个要特殊的处理一下。
代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
char_lst = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
for i in range(0, 26):
char_lst.append(chr(65+i))
# 用 char_lst 保存各个进制下面的一个字符
# 进制转换函数
def trans(num, pos):
res = []
while num:
res.append(char_lst[num%pos])
num //= pos
return "".join(res[::-1])
# 对于负数问题的特殊判断
fu = ""
if a < 0:
a = -a
fu = "-"
print(fu+trans(a, b))