【python】进制转换


  在编程题目中往往会涉及到将 int 类型转化为二进制后进行操作。除了自己现场造轮子 while 循环,有没有更简易的实现方式呢?

一、转化为二进制

1.1 bin 函数

  bin 是 python 内置的将 int 型转化为二进制的函数:
在这里插入图片描述
  我们只需要在 bin 函数返回值的基础上进行截取即可接收:

>>> a = 7
>>> b = bin(a)[2:]
>>> b
'111'

1.2 format 函数

  format 函数可以控制要打印数字的输出形式,可以通过 “:b” 的方法实现转化为二进制:

>>> a = 7
>>> b = '{0:b}'.format(a)
>>> b
'111'
>>> c = '{:b}'.format(a)
>>> c
'111'

  当只转化一个数字时,可省略占位符 “0”。

1.3 f-string 格式

  f-string 格式其实是对 format 函数的简化写法:

>>> a = 7
>>> b = f'{a:b}'
>>> b
'111'

二、转化为八进制、十六进制

2.1 八进制

  八进制的转换需要用到 oct 函数和 “: o” 格式:

>>> a = 17

>>> o1 = oct(a)[2:]
>>> o2 = '{0:o}'.format(a)
>>> o3 = f'{a:o}'

>>> o1 == o2 == o3 == '21'
True

2.2 十六进制

  十六进制的转换需要用到 hex 函数和 “:x” 格式:

>>> a = 37

>>> h1 = hex(a)[2:]
>>> h2 = '{0:x}'.format(a)
>>> h3 = f'{a:x}'

>>> h1 == h2 == h3 == '25'
True

三、转化回十进制

  使用 int 函数默认返回为十进制,需要根据被转化的数来确定 base 参数。如:转化二进制数时需设置 base 为 2, 转化八进制数时需设置 base 为 8 …… 其中,“base=” 可省略不写。
  是否添加 “0b”、“0o”等前缀对结果并不影响:

>>> int('0b111', base=2)
7
>>> int('0b111', 2)
7
>>> int('111', 2)
7
>>> int('111', 2) == int('0b111', base=2) == 7
True
>>> int('21', 8) == int('0o21', base=8) == 17
True
>>> int('25', 16) == int('0x25', base=16) == 37
True

在这里插入图片描述

更多 python 的使用方法和应用,敬请关注后续更新~

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今夕晚风依旧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值