题解 | 进制转换
进制转换
https://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6
import sys
while True:
try:
#获取字符串
tmp=input()
numstr=tmp[2:]
n=len(numstr)
res=0
dic={'A':10,'B':11,'C':12,'D':13,'E':14,'F':15}
for i in range(n-1,-1,-1):
#字母
if numstr[i] in dic:
res+=dic[numstr[i]]*16**(n-1-i)
else:
res+=int(numstr[i])*16**(n-1-i)
print(res)
except:
break
虽然Python有int(num,进制值)函数,但是如果实现其底层算法也是很简单的:
- 获取并处理字符串(忽略0x):[2:]
- 用字典表示abcde的对应值
- 通过下标法从右往左遍历字符串并求和。若下标为i,长度为n,则要乘方的数则为n-1-i
查看12道真题和解析