首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Python中表达二进制文字?

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

Stack Overflow用户
提问于 2008-08-04 18:20:36
回答 8查看 286.8K关注 0票数 384

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

我很容易就能找到十六进制的答案:

代码语言:javascript
复制
>>> 0x12AF
4783
>>> 0x100
256

和八进制:

代码语言:javascript
复制
>>> 01267
695
>>> 0100
64

中如何使用文字来表示二进制?

答案摘要

literals.

  • Python

  • Python2.5和更早版本:可以使用int('01010101111',2)表示二进制,但不能使用literal.

  • Python 2.5和更早版本:没有办法表示二进制literals.

  • Python 2.6测试版:您可以这样做:0B1100111.

  • Python或Python2.6测试版:还允许0o270O27 (第二个字符是字母O)表示octal.

  • Python 3.0测试版:与2.6相同。但将不再允许八进制的旧027语法。
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2008-08-16 12:35:36

参考-未来Python的可能性:

从Python2.6开始,您可以使用前缀0b0B来表示二进制文字

代码语言:javascript
复制
>>> 0b101111
47

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

代码语言:javascript
复制
>>> bin(173)
'0b10101101'

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

票数 329
EN

Stack Overflow用户

发布于 2008-08-04 18:34:46

代码语言:javascript
复制
>>> print int('01010101111',2)
687
>>> print int('11111111',2)
255

另一种方式。

票数 79
EN

Stack Overflow用户

发布于 2016-05-14 19:58:03

如何在Python语言中表达二进制文字?

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

代码语言:javascript
复制
>>> 0b0010101010
170
>>> 0B010101
21

在Python3 docs中,以下是在Python语言中提供整数文字的方法:

整数文字由以下词法定义描述:

除了可以存储在可用内存中的内容之外,对整型文字的长度没有限制。

请注意,非零十进制数中不允许使用前导零。这是为了消除C风格的八进制字面量的歧义,Python在3.0版之前使用了这种字面量。

整数字面量的一些示例:

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

版本3.6中的更改:现在允许使用下划线对文字进行分组。

表示二进制的其他方式:

你可以在一个字符串对象中包含0和1,它是可以操作的(尽管在大多数情况下,你可能只需要对整数进行逐位操作)--只需传递int,0和1组成的字符串以及你要转换的基数(2):

代码语言:javascript
复制
>>> int('010101', 2)
21

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

代码语言:javascript
复制
>>> int('0b0010101010', 2)
170

如果你将它作为基数传递给0,如果字符串没有指定前缀,它将假定基数为10:

代码语言:javascript
复制
>>> int('10101', 0)
10101
>>> int('0b10101', 0)
21

将int转换回人类可读的二进制:

您可以将一个整数传递给bin,以查看二进制文字的字符串表示:

代码语言:javascript
复制
>>> bin(21)
'0b10101'

您可以结合使用binint来来回切换:

代码语言:javascript
复制
>>> bin(int('010101', 2))
'0b10101'

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

代码语言:javascript
复制
>>> format(int('010101', 2), '{fill}{width}b'.format(width=10, fill=0))
'0000010101'
>>> format(int('010101', 2), '010b')
'0000010101'
票数 37
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档