【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 的使用方法和应用,敬请关注后续更新~

猜你喜欢

转载自blog.csdn.net/weixin_44844635/article/details/132797715
今日推荐