zoukankan      html  css  js  c++  java
  • 二进制、八进制、十进制、十六进制之间进行相互转换

    #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'))
  • 相关阅读:
    HDU 1102 Constructing Roads
    HDU 1285 确定比赛名次。
    最小生成树 HDU 各种畅通工程的题,prim和kru的模板题
    HDU Jungle Roads 1301 最小生成树、
    并查集小结(转)
    HDU hdu 2094 产生冠军 拓扑排序 判定环
    模运算(转)
    拓扑排序(主要是确定环和加法) HDU 2647 Reward
    HDU 1372 Knight Moves 简单BFS
    用计算机模型浅析人与人之间沟通方式 (一)如何谈话
  • 原文地址:https://www.cnblogs.com/lkpp/p/7400058.html
Copyright © 2011-2022 走看看