python中的进制转换

#10进制转二进制(支持任何正整数)
def _10to2(num):
    tmp=""
    result=""
    #获取二进制字符串
    while True:
        tmp=tmp+str(num%2)
        num=num//2
        if num==0:
            break
    #反转字符串
    #length=len(tmp)-1
    #while True:
    #    result=result+tmp[length]
    #    length=length-1
    #    if length<0:
    #        return result
    tmp=list(tmp)
    tmp.reverse()
    tmp="".join(tmp)
    return tmp
#2进制转10进制(支持任何正整数)
def _2to10(num):
    result=0
    length=len(num)
    for i in range(0,length):
        #1010:1*(2**3)+0*(2**2)+1*(2**1)+0*(2**0)
        #result=result+2**(length-i-1)*int(num[i])
        result=result+(int(num[i])<<length-i-1)
    return result;

#10进制转二进制(兼容正负数,32位机)
def _10to2_32(num):
    if(abs(num)!=num):
        num=2**32+num
    return _10to2(num)

#2进制转10进制(兼容正负数,32位机,若参数位数大于32位结果无效)
def _2to10_32(num):
    result=_2to10(num)
    if result>0x7fffffff:
        result=result-2**32
    return result


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值