如何在Python中表示二进制文本?

2024-04-27 03:23:02 发布

您现在位置:Python中文网/ 问答频道 /正文

如何用Python文本将整数表示为二进制数?

我很容易找到hex的答案:

>>> 0x12AF
4783
>>> 0x100
256

和八进制:

>>> 01267
695
>>> 0100
64

如何使用文本在Python中表示二进制?


答案摘要

  • Python 2.5及更早版本:可以使用int('01010101111',2)来表示二进制文件,但不能使用文本。
  • Python2.5及更早版本:表示二进制文本是不可能的。
  • Python 2.6beta:您可以这样做:0b11001110B1100111
  • Python 2.6beta:还允许0o270O27(第二个字符是字母O)表示八进制。
  • Python 3.0beta:与2.6相同,但不再允许八进制使用较旧的027语法。

Tags: 文件答案文本版本字母二进制语法整数
3条回答
>>> print int('01010101111',2)
687
>>> print int('11111111',2)
255

另一种方式。

How do you express binary literals in Python?

它们不是“二进制”文字,而是“整数文字”。您可以使用二进制格式来表示整型文字,格式为0,后跟Bb,后跟一系列零和一,例如:

>>> 0b0010101010
170
>>> 0B010101
21

在Python 3docs中,以下是在Python中提供整数文本的方法:

Integer literals are described by the following lexical definitions:

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"

There is no limit for the length of integer literals apart from what can be stored in available memory.

Note that leading zeros in a non-zero decimal number are not allowed. This is for disambiguation with C-style octal literals, which Python used before version 3.0.

Some examples of integer literals:

7     2147483647                        0o177    0b100110111
3     79228162514264337593543950336     0o377    0xdeadbeef
      100_000_000_000                   0b_1110_0101

Changed in version 3.6: Underscores are now allowed for grouping purposes in literals.

其他表示二进制的方法:

字符串对象中可以有0和1,可以对其进行操作(虽然在大多数情况下可能只需对整数执行按位操作)-只需将0和1的字符串以及要从(2)转换的基传递给int即可:

>>> int('010101', 2)
21

您可以选择使用0b0B前缀:

>>> int('0b0010101010', 2)
170

如果将其作为基传递0,如果字符串没有用前缀指定,则将假定为基10:

>>> int('10101', 0)
10101
>>> int('0b10101', 0)
21

从int转换回人类可读的二进制文件:

可以将整数传递给bin以查看二进制文本的字符串表示形式:

>>> bin(21)
'0b10101'

你可以结合binint来来回:

>>> bin(int('010101', 2))
'0b10101'

如果要使前面的零具有最小宽度,也可以使用格式规范:

>>> format(int('010101', 2), '{fill}{width}b'.format(width=10, fill=0))
'0000010101'
>>> format(int('010101', 2), '010b')
'0000010101'

作为参考-未来Python的可能性:
从Python 2.6开始,您可以使用前缀0b0b来表示二进制文本:

>>> 0b101111
47

您还可以使用新的bin函数来获取数字的二进制表示:

>>> bin(173)
'0b10101101'

文档的开发版本:What's New in Python 2.6

相关问题 更多 >