题解 | 进制转换

进制转换

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
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务