在编程题目中往往会涉及到将 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 的使用方法和应用,敬请关注后续更新~