二进制八进制十进制十六进制相互

本文提供了一种简单的方法,详细介绍了如何在不同进制(二进制、八进制、十进制、十六进制)之间进行相互转换,包括从二进制到十进制、二进制到八进制、二进制到十六进制的转换算法,以及从十进制到二进制、十进制到八进制、十进制到十六进制的转换算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

比较笨的办法,见笑了
#coding = utf-8
'''
Created on 2015年5月28日 
二进制、八进制、十进制、十六进制之间进行相互转换
'''
class nsc():
    
    hex_num={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'}
    num_hex={'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9,'a':10,'b':11,'c':12,'d':13,'e':14,'f':15}
    
    '''二进制转十进制'''
    def bin2dec(self,num):
        #根据二进制的位数来计算
        result=0
        for i in str(num):
            result=result*2+int(i) 
        return result
    
    '''二进制转八进制'''
    def bin2oct(self,num):
        result = ''
        temp=list(str(num))
        insert=3-len(temp)%3
        
        while insert and insert !=3:
            temp.insert(0, 0)
            insert-=1
        
        while temp:
            result=str(int(temp.pop())*1+int(temp.pop())*2+int(temp.pop())*4)+result
        return int(result)
   
    '''二进制转十六进制'''
    def bin2hex(self,num):
        result = ''
        temp=list(str(num))
        insert=4-len(temp)%4
        
        while insert and insert!=4:
            insert-=1
            temp.insert(0, 0)
                   
        while temp:
            #TODO 格式化输出
            x=int(temp.pop())*1+int(temp.pop())*2+int(temp.pop())*4+int(temp.pop())*8
            result=self.hex_num[x]+result
        return result
    
    '''十进制转二进制'''
    def dec2bin(self,num):
        #除2取余,逆序排列
        result=''
        temp=[]
        while num:
            temp.append(num%2)
            num=num//2
        while temp:
            result+=str(temp.pop())
        return int(result)
    
    '''十进制转八进制'''
    def dec2oct(self,num):
        return self.bin2oct(self.dec2bin(num))
    
    '''十进制转十六进制'''
    def dec2hex(self,num):
        return self.bin2hex(self.dec2bin(num))
    
    '''十六进制转二进制'''
    def hex2bin(self,num):
        hex_n=list(str(num))
        result=''
        for i in hex_n:
            result+=str(self.dec2bin(self.num_hex[i]))
        return result
         
    '''十六进制转八进制'''
    def hex2oct(self,num):
        return self.bin2oct(self.hex2bin(num))
    
    '''十六进制转十进制'''
    def hex2dec(self,num):
        return self.bin2dec(self.hex2bin(num))
        
if __name__=='__main__':
    nc=nsc()
    print(nc.hex2dec('fffee'))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值