使用format() function:
>>> format(14, '#010b')
'0b00001110'
format()函数简单地格式化Format Specification mini language之后的输入.#使格式包含0b前缀,010大小格式化输出以适应10个字符宽度,0填充; 0b前缀为2个字符,二进制数字为8个字符.
这是最紧凑和直接的选择.
如果要将结果放在一个更大的字符串中,请使用formatted string literal(3.6)或使用str.format()并在占位符{:..}的冒号后面放置format()函数的第二个参数:
>>> value = 14
>>> f'The produced output, in binary, is: {value:#010b}'
'The produced output, in binary, is: 0b00001110'
>>> 'The produced output, in binary, is: {:#010b}'.format(value)
'The produced output, in binary, is: 0b00001110'
实际上,即使只是格式化单个值(因此不将结果放在更大的字符串中),使用格式化的字符串文字比使用format()更快:
>>> import timeit
>>> timeit.timeit("f_(v, '#010b')", "v = 14; f_ = format") # use a local for performance
0.40298633499332936
>>> timeit.timeit("f'{v:#010b}'", "v = 14")
0.2850222919951193
但是,只有当紧密循环中的性能很重要时,我才会使用它,因为格式(…)更好地传达了意图.
如果你不想要0b前缀,只需删除#并调整字段的长度:
>>> format(14, '08b')
'00001110'