如何在 Python 中表达二进制文字?
如何使用 Python 文字将整数表示为二进制数?
我很容易找到十六进制:
>>> 0x12AF
4783
>>> 0x100
256
和八进制的答案:
>>> 01267
695
>>> 0100
64
如何在Python中使用文字来表达二进制?
答案摘要
- Python 2.5 及更早版本:可以使用
int('01010101111',2)
表达二进制,但不能使用文字。 - Python 2.5 及更早版本:没有办法来表达二进制文字。
- Python 2.6 beta:您可以这样做:
0b1100111
或0B1100111
。 - Python 2.6 beta:还允许
0o27
或0O27
(第二个字符是字母 O)表示八进制。 - Python 3.0 beta:与 2.6 相同,但不再允许使用旧的
027
八进制语法。
How do you express an integer as a binary number with Python literals?
I was easily able to find the answer for hex:
>>> 0x12AF
4783
>>> 0x100
256
and octal:
>>> 01267
695
>>> 0100
64
How do you use literals to express binary in Python?
Summary of Answers
- Python 2.5 and earlier: can express binary using
int('01010101111',2)
but not with a literal. - Python 2.5 and earlier: there is no way to express binary literals.
- Python 2.6 beta: You can do like so:
0b1100111
or0B1100111
. - Python 2.6 beta: will also allow
0o27
or0O27
(second character is the letter O) to represent an octal. - Python 3.0 beta: Same as 2.6, but will no longer allow the older
027
syntax for octals.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
从二进制获取整数表示的另一个好方法是使用 eval()
像这样:
我想这也是一种方法。
我希望这是一个令人满意的答案:D
Another good method to get an integer representation from binary is to use eval()
Like so:
I guess this is a way to do it too.
I hope this is a satisfactory answer :D
我在Python 3.6.9中尝试过这个
将二进制转换为十进制
将十进制转换为二进制
将 0 作为第二个参数 python假定它为十进制。
I've tried this in Python 3.6.9
Convert Binary to Decimal
Convert Decimal to binary
Place a 0 as the second parameter python assumes it as decimal.
这里开头的 0 指定基数是 8(而不是 10),这很容易看出:
如果不以 0 开头,那么 python 会假设该数字是基数 10。
0 in the start here specifies that the base is 8 (not 10), which is pretty easy to see:
If you don't start with a 0, then python assumes the number is base 10.
据我所知,Python 从 2.5 版本开始,仅支持十六进制和十六进制。 八进制文字。 我确实找到了一些关于在未来版本中添加二进制文件的讨论,但没有明确的内容。
As far as I can tell Python, up through 2.5, only supports hexadecimal & octal literals. I did find some discussions about adding binary to future versions but nothing definite.
它们不是“二进制”文字,而是“整数文字”。 您可以使用二进制格式表示整数文字,即
0
后跟B
或b
后跟一系列零和一,例如:从 Python 3 docs 中,这些是提供Python 中的整数文字:
表达二进制的其他方式:
您可以在可操作的字符串对象中包含零和一(尽管在大多数情况下您可能应该只对整数进行按位运算) - 只需将零和一的字符串以及基数传递给 int您正在从 (2) 进行转换:
您可以选择使用
0b
或0B
前缀:如果您将其传递为
0
作为基础,它将如果字符串未指定前缀,则假定基数为 10:从 int 转换回人类可读的二进制:
您可以将整数传递给 bin 以查看二进制文字的字符串表示形式:
并且您可以组合
bin 和
int
来回切换:如果您想要前面带零的最小宽度,您也可以使用格式规范:
They're not "binary" literals, but rather, "integer literals". You can express integer literals with a binary format with a
0
followed by aB
orb
followed by a series of zeros and ones, for example:From the Python 3 docs, these are the ways of providing integer literals in Python:
Other ways of expressing binary:
You can have the zeros and ones in a string object which can be manipulated (although you should probably just do bitwise operations on the integer in most cases) - just pass int the string of zeros and ones and the base you are converting from (2):
You can optionally have the
0b
or0B
prefix:If you pass it
0
as the base, it will assume base 10 if the string doesn't specify with a prefix:Converting from int back to human readable binary:
You can pass an integer to bin to see the string representation of a binary literal:
And you can combine
bin
andint
to go back and forth:You can use a format specification as well, if you want to have minimum width with preceding zeros:
其他方式。
Another way.
仅供参考——未来 Python 的可能性:
从 Python 2.6 开始,您可以使用前缀 0b 或 0B 来表示二进制文字:
您还可以使用新的 bin 函数来获取二进制表示形式多个:
文档的开发版本: Python 2.6 的新增功能
For reference—future Python possibilities:
Starting with Python 2.6 you can express binary literals using the prefix 0b or 0B:
You can also use the new bin function to get the binary representation of a number:
Development version of the documentation: What's New in Python 2.6
我很确定这是由于 Python 3.0 中的更改而导致的问题之一,也许 bin() 与 hex() 和 oct() 配合使用。
编辑:
布兰迪的答案在所有情况下都是正确的。
I am pretty sure this is one of the things due to change in Python 3.0 with perhaps bin() to go with hex() and oct().
EDIT:
lbrandy's answer is correct in all cases.