Python 各种进制互相转换的函数

 

超过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)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值