如何可以表示为二进制数与 Python 原义字符整数?

我以前很容易能够找到答案的十六进制表示︰

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

和八进制︰

    >>> 01267
    695
    >>> 0100
    64

如何在 Python 中使用为明示的二进制文本?


答案的摘要

  • Python 2.5 及更早版本︰ 可以表达二进制文件使用int('01010101111',2)而不是能与文本。
  • Python 2.5 及更早版本︰ 没有任何方法来表示二进制文字。
  • Python 2.6 测试︰ 您可以执行如下所示︰ 0b1100111 0B1100111.
  • Python 2.6 测试版︰ 0o27 0O27还允许 (第二个字符为字母 O) 来表示八进制。
  • Python 3.0 测试版︰ 与 2.6,但将不再允许 octals 的旧027语法相同。
2008-08-04 18:20:36
问题评论:

没有可以表达二进制文字 (或而不是整数作为二进制文件) 的方法︰这是一个链接到在此问题上的语言参考

+ 1 摘要,非常方便。

bininteger:: ="0"("b"|"B") bindigit +

@BartoszRadaczyński 的注释现已过时,且死链接。2.5 文档的相关部分应类似于用于保存在那里,如果任何人想要看到它。

回答:

供参考 — —未来的 Python 可能性︰
开始使用 Python 2.6 可以表示使用前缀0b 二进制文字:

>>> 0b101111
47

此外可以使用新的bin函数来获取数字的二进制表示形式︰

>>> bin(173)
'0b10101101'

开发版本的文档︰什么是 Python 2.6 中的新增功能

这就是用于声明一组位标志尤其好。

我认为.formatformat是几乎总是更可取。请考虑bin(30).zfill(8)它是只是一种愚蠢的语法。

这适用于 python 也 3。

>>> print int('01010101111',2)
687
>>> print int('11111111',2)
255

另一种方法。

您如何表达在 Python 中的二进制文字?

它们不是"二进制"的文字,但实际上,"整数"。0Bb跟一系列的零和的例如,可以表示使用二进制格式的整数︰

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

从 Python 3的文档中,这些是提供在 Python 中的整数的方法︰

整数由以下词法定义描述︰

integer        ::=  decimalinteger | octinteger | hexinteger | bininteger
decimalinteger ::=  nonzerodigit digit* | "0"+
nonzerodigit   ::=  "1"..."9"
digit          ::=  "0"..."9"
octinteger     ::=  "0" ("o" | "O") octdigit+
hexinteger     ::=  "0" ("x" | "X") hexdigit+
bininteger     ::=  "0" ("b" | "B") bindigit+
octdigit       ::=  "0"..."7"
hexdigit       ::=  digit | "a"..."f" | "A"..."F"
bindigit       ::=  "0" | "1"

除可用内存中可以存储的内容之外的整数的长度没有限制。

请注意,不允许有非零的小数中的前导零。这是为了与 C 样式八进制文本,在 3.0 版之前使用 Python 的消除歧义。

整数标识符的一些示例︰

7     2147483647                        0o177    0b100110111
3     79228162514264337593543950336     0o377    0xdeadbeef

表示二进制文件的其他方法︰

可以有零和字符串中的对象的可操作 (尽管您可能应该只做执行按位运算在大多数情况下的整数)-只需将 int 零和的基 (2) 从转换的字符串︰

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

(可选) 可以具有0b0B前缀︰

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

如果传递0作为基础,将假设以 10 为基如果字符串未指定前缀︰

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

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

您可以传递的整数储料箱查看二进制文字的字符串表示形式︰

>>> 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'

从此处开始在 0 指定基是 8 (不为 10),这是很容易,请参阅︰

>>> int('010101', 0)
4161

如果您不从零开始,python 假定的数字是以 10 为基。

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

据我可以告诉 Python,向上通过 2.5 中,只支持十六进制和八进制文本。未找到有关添加到未来版本的二进制文件,但没有明确的一些讨论。

内容来源于Stack Overflow How do you express binary literals in Python?
请输入您的翻译

How do you express binary literals in Python?

确认取消