我正在尝试使用 Python 中的 bin() 函数将整数转换为二进制。但是,它总是删除我实际需要的前导零,这样结果总是 8 位:
例子:
bin(1) -> 0b1
# What I would like:
bin(1) -> 0b00000001
有没有办法做到这一点?
原文由 Niels Sønderbæk 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在尝试使用 Python 中的 bin() 函数将整数转换为二进制。但是,它总是删除我实际需要的前导零,这样结果总是 8 位:
例子:
bin(1) -> 0b1
# What I would like:
bin(1) -> 0b00000001
有没有办法做到这一点?
原文由 Niels Sønderbæk 发布,翻译遵循 CC BY-SA 4.0 许可协议
>>> '{:08b}'.format(1)
'00000001'
请参阅: 格式规范迷你语言
注意 Python 2.6 或更早版本,不能省略 :
之前的位置参数标识符,所以使用
>>> '{0:08b}'.format(1)
'00000001'
原文由 bwbrowning 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答884 阅读✓ 已解决
1 回答1.8k 阅读✓ 已解决
使用
format()
功能:format()
函数只是按照 格式规范迷你语言 对输入进行格式化。 The#
makes the format include the0b
prefix, and the010
size formats the output to fit in 10 characters width, with0
填充; 2 个字符为0b
前缀,另外 8 个字符为二进制数字。这是最紧凑和直接的选择。
如果将结果放入更大的字符串中,请使用 格式化字符串文字(3.6+) 或使用
str.format()
并将format()
函数的第二个参数放在占位符的冒号之后{:..}
:碰巧的是,即使只是格式化单个值(因此没有将结果放入更大的字符串中),使用格式化字符串文字也比使用
format()
更快:但只有在紧密循环中的性能很重要时,我才会使用它,因为
format(...)
更好地传达了意图。如果您不想要
0b
前缀,只需删除#
并调整字段的长度: