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()

转载于:https://www.cnblogs.com/cookie1026/p/6052878.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值