''' mbinary ######################################################################### # File : num_weight.py # Author: mbinary # Mail: zhuheqin1@gmail.com # Blog: https://mbinary.xyz # Github: https://github.com/mbinary # Created Time: 2018-05-19 21:36 # Description: ######################################################################### ''' def covert(s,basefrom=10,baseto=2): return d2n(n2d(s,basefrom),baseto) def n2d(s,base=16): ''' num of base_n(n<36) to decimal''' dic = {chr(i+ord('0')):i for i in range(10)} s=s.upper() if base>10: dic.update({chr(i+ord('A')):i+10 for i in range(26)}) #if base in [16,8,2] : # p=max(map(s.find,'OBX')) # s=s[p+1:] #remove prefix of hex or bin or oct rst=0 for i in s: rst=dic[i]+rst*base return rst def d2n(n,base=16): ''' num of base_n(n<36) to decimal''' dic = {i:chr(i+ord('0')) for i in range(10)} if base>10: dic.update({i+10:chr(i+ord('A')) for i in range(26)}) rst=[] while n!=0: i=int(n/base) rst.append(dic[n-i*base]) n=i return ''.join(rst[::-1]) ''' >>> n2d(str(d2n(4001))) 4001 >>> d2n(n2d(str(4001)),2) '100000000000001' >>> covert('4001',16,2) '100000000000001' '''