Python bin()

时间:2020-02-23 14:42:27  来源:igfitidea点击:

Python bin()函数用于将整数转换为二进制格式的字符串。
格式化的字符串以" 0b"为前缀。

Python bin()

Python bin()函数也可以与具有不同格式(例如八进制,十六进制)的整数一起使用。
该函数将负责将它们转换为二进制字符串。
让我们看一下bin()函数的一些示例。

x = 10
y = bin(x)
print(type(y))
print(bin(x))

输出:

<class 'str'>
0b1010

从输出中可以明显看出bin()函数返回的是字符串而不是数字。
Python type()函数返回对象的类型。

带有其他格式整数的Python bin()示例

我们来看一些将bin()函数与不同格式的整数一起使用的示例。

x = 0b110 # 6
print(bin(x))

x = 0xF # 15
print(bin(x))

x = 0o70 # 56
print(bin(x))

输出:

0b110
0b1111
0b111000

提示:如果您不想在二进制字符串中添加" 0b"前缀,则还可以使用"format()"函数。
这是一个简单的示例,显示了如何使用format()函数。

x = 10
print(format(x, '#b')) # 0b1010
print(format(x, 'b')) # 1010
x= 0xF
print(format(x, 'b')) # 1111
print(f'{x:b}') # 1111 (If you knew this format, you are Python Ninja!)

输出:

0b1010
1010
1111
1111

带有浮点数的Python bin()

让我们看看尝试使用float参数运行bin()函数时会发生什么。

x = 10.5
print(bin(x))

输出:

TypeError: 'float' object cannot be interpreted as an integer

带有对象的Python bin()

如果要使用对象的二进制字符串表示形式,则必须实现__index __()函数,该函数必须返回整数。
让我们用一个简单的例子来看一下。

class Person:
  id = 0
  def __init__(self, i):
      self.id = i

  def __index__(self):
      return self.id

p = Person(10)
print(bin(p))

输出:0b1010

如果该对象未定义__index __()函数,则会收到错误消息,提示为" TypeError:'Person'对象无法解释为整数"。

让我们看看如果__index __()函数返回非整数会发生什么。
只需将index()函数更改为以下内容:

def __index__(self):
      return str(self.id)

错误:TypeError:__ index__返回了非整数(类型str)

这就是python bin()函数将整数转换为二进制字符串的全部操作。
我们还了解到,通过实现返回整数的__index __()函数,也可以将Object转换为二进制字符串表示形式。