python的進制轉換二進制,八進制,十六進制及其原理


#!usr/bin/env python
# coding:utf-8

def binary():
'''二進制的方法與算法'''
   Number = 10
   Number1 = 20
   Number2 = 30
   print bin(Number),type(bin(Number1)),bin(Number2)
#用十進制算法來表示二進制
  # 除余法:10%2=0放入字符串個位'0',5%2=1放入字符串的十位'10',2%2=0放入百位'010',最后余數放入千位'1010'
   l = []
while Number>0:
l.insert(0,str(Number%2)) #臨時列表l每次從左插入計算后的余數
       Number /= 2                                #每次把Number除法的結果返回判斷循環
   print l
s = ''.join(l) #列表轉換字符串循環
   print s

 



def octonary():
'''八進制的方法與算法'''
   Number = 10
   Number1 = 20
   Number2 = 30
   print oct(Number),oct(Number1),oct(Number2)
# 除余法:10%8=2放入字符串個位'2',余數放入十位'12'
   l = []
while Number>0:
l.insert(0,str(Number%8))
Number /= 8
   print l
s = ''.join(l)
print s

 



def hexadecimal():

'''十六進制的方法與算法'''
   Number = 30
   Number1 = 20
   Number2 = 50
   print hex(Number),hex(Number1),hex(Number2)
# 除余法:30%16=14由於個位數上大於10放入會不好識別,所以用字母代替a=10,b=11,c=12,d==13,e=14,f=15
   # 放入字符串個位'e',余數放入十位'1e'
   l = []
while Number>0:
n=str(Number%16) #除余的數賦值變量n后面比對
       l.insert(0,n)
Number /= 16
       if n=='10': l[0]='a'                              #比對n是否為兩位數10轉換字符a
       elif n=='11':l[0]='b'                              #以下同理
       elif n=='12':l[0]='c'
       elif n=='13':l[0]='d'
       elif n=='14':l[0]='e'
       elif n=='15':l[0]='f'
   print l
s = ''.join(l)
print s

 




if __name__=="__main__":
binary()
octonary()
hexadecimal()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM