python基础--实现大数到任意进制的转换

版权声明:本文为博主原创文章,未经博主允许不得转载。可联系邮箱[email protected] https://blog.csdn.net/Justin_bibo/article/details/79608662

问题

实现大数,远远超过python能表示的整数,比如有上百位整数,到2-16进制的转换.

解决思路

讲大数存在字符串,从大数的最高位开始,依次到最低位,每一位取出来转换成整数,对进制x进行整除和取余,将商保存在字符串中,将余数*10加上大数的下一位作为新的被除数,以此类推,直到大数取完为止。得到了整个大数一次的商和余数,再用迭代相除法,直到商为0停止,记录每次的余数,即可算出转换之后的进制。参考python十分简单实现十进制到任意进制的转换

代码

def f(n,x):

    #n为待转换的大数,全部是整数,并且用字符串保存,x为进制,取值为2-16
    a=[0,1,2,3,4,5,6,7,8,9,'A','b','C','D','E','F']
    b=[]
    while True:
        jinwei=0
        shang=''
        for i in n:
            beichushu=int(i)+jinwei*10

            s=beichushu//x
            y=beichushu%x
            shang=shang+str(s)
            jinwei=int(y)
        b=b+[jinwei]

        if int(shang)==0:
            break
        n=shang
    b.reverse()
    for i in b:
        print(a[i],end='')
    print('('+str(x)+'x)')

f('10241111111111111111111111111111111111',16)

执行结果

7b45DC2E7C081bAAE2CD8b5C71C71C7(16x)

来自:鉏飞祥,安徽大学

猜你喜欢

转载自blog.csdn.net/Justin_bibo/article/details/79608662