【Python】进制转换

python 建立函数,输入二进制数字,输出二进制字符串

# -*- coding: utf-8 -*-
"""
Created on Fri Aug 17 10:44:58 2018

@author: A3
"""

import numpy as np


class digit_conversion():
    def __init__(self):
        pass    
    
    def digit_2to10(self,data):
        '''十进制输入,二进制输出'''
        data_con = []
        for i in range(len(data)):
            data_i = int(data[i]) * (2 ** (len(data) - i - 1))
            data_con.append(data_i)   
        return sum(data_con)       
    
    def digit_10to2(self,data):
        '''二进制输入,十进制输出'''
        data_con = []
        while data >= 1:
            p = 1 if data % 2 > 0 else 0  
            data_con.append(str(p))
            data = int(data / 2)
        return ''.join(data_con[::-1]) #或者用reverse
    
    def derect_2to2_1(self,data1,data2):
        '''第一种方法,二进制输入,二进制输出'''
        n1,n2 = list(data1[::-1]),list(data2[::-1])
        if  len(data1) > len(data2):
            for i in range(1,(len(data1) - len(data2) + 1)):
                n2.append('0')
        elif len(data1) < len(data2):
            for i in range(1,(len(data2) - len(data1) + 1)):
                n1.append('0')    
        data1,data2 = ''.join(n1),''.join(n2)
        data_con = []
        n = 0
        for i in range(len(data1)):
            data_i = 0 if (int(data1[i]) + int(data2[i]) + n) == 0 or (int(data1[i]) + int(data2[i]) + n) == 2 else 1
            n = 1 if (int(data1[i]) + int(data2[i]) + n)> 1 else 0
            data_con.append(str(data_i))
        return ''.join(data_con[::-1])
    
    def derect_2to2_2(self,data1,data2):
        '''第二种方法,二进制输入,二进制输出'''
        num = list(str(int(data1) + int(data2)))[::-1]
        q = 0
        box = []
        for i in range(len(num)):
            p = int(num[i])
            p = 0 if p + q == 0 or p + q == 2 else 1
            q = 1 if int(num[i]) + q > 1 else 0
            box.append(str(p))
        box = ''.join(box) + '1' if q == 1 else ''.join(box)   
        return box[::-1]  
                 
if __name__ == "__main__":
    dc = digit_conversion()
    result = dc.derect_2to2_2(input('please input a num:\n'),input('please input another num:\n'))
    print('sum is: %s' % result)
   



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值