#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])<
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
测试:
print(_2to10("1010"))
print(_10to2(10))
print(_2to10("11001100101100011001111001100000111010111011001010100101000111010101100011111100101000110100110111100110001"))
print(_10to2(129740123740982735982739857239857))
print(_10to2_32(-19))
print(_2to10_32("11111111111111111111111111101101"))