您如何用Python表达二进制文字?
它们不是“二进制”文字,而是“整数文字”。您可以用二进制格式表示整数文字,0后跟a B或b后跟一系列零和一,例如:
>>> 0b0010101010
170
>>> 0B010101
21
从Python 3 文档开始,以下是在Python中提供整数文字的方式:
  整数文字由以下词汇定义描述:
integer      ::=  decinteger | bininteger | octinteger | hexinteger
decinteger   ::=  nonzerodigit (["_"] digit)* | "0"+ (["_"] "0")*
bininteger   ::=  "0" ("b" | "B") (["_"] bindigit)+
octinteger   ::=  "0" ("o" | "O") (["_"] octdigit)+
hexinteger   ::=  "0" ("x" | "X") (["_"] hexdigit)+
nonzerodigit ::=  "1"..."9"
digit        ::=  "0"..."9"
bindigit     ::=  "0" | "1"
octdigit     ::=  "0"..."7"
hexdigit     ::=  digit | "a"..."f" | "A"..."F"
  
  除了可以存储在可用内存中的整数之外,整数字面量的长度没有限制。
  
  请注意,不允许使用非零十进制数字开头的零。这是为了消除C样式八进制文字的歧义,Python在3.0版之前使用了这些文字。
  
  整数文字的一些示例:
7     2147483647                        0o177    0b100110111
3     79228162514264337593543950336     0o377    0xdeadbeef
      100_000_000_000                   0b_1110_0101
  
  在版本3.6中进行了更改:现在允许在文本中使用下划线进行分组。
其他表达二进制的方式:
您可以在可操作的字符串对象中包含零和一(尽管在大多数情况下,您可能应该对整数进行按位运算)-只需将零和一的字符串以及您要从中转换的基数传递给int ):
>>> int('010101', 2)
21
您可以选择使用0b或0B前缀:
>>> int('0b0010101010', 2)
170
如果将其0作为基数传递,则如果字符串未指定前缀,则它将假定基数为10:
>>> int('10101', 0)
10101
>>> int('0b10101', 0)
21
从int转换回人类可读的二进制文件:
您可以将整数传递给bin以查看二进制文字的字符串表示形式:
>>> bin(21)
'0b10101'
你可以结合bin并int去来回:
>>> bin(int('010101', 2))
'0b10101'
如果希望最小宽度和前面的零,也可以使用格式规范:
>>> format(int('010101', 2), '{fill}{width}b'.format(width=10, fill=0))
'0000010101'
>>> format(int('010101', 2), '010b')
'0000010101'