Python bin()函数

原文: https://thepythonguru.com/python-builtin-functions/bin/


于 2020 年 1 月 7 日更新


bin()函数以字符串形式返回整数的二进制表示形式。

其语法如下:

  1. bin(number) -> binary representation
参数 描述
number 任何数值

这是一个例子:

  1. >>>
  2. >>> bin(4) # convert decimal to binary
  3. '0b100'
  4. >>>
  5. >>>
  6. >>> bin(0xff) # convert hexadecimal to binary, 0xff is same decimal 255
  7. '0b11111111'
  8. >>>
  9. >>>
  10. >>> bin(0o24) # convert octacl to binary, 0o24 is same decimal 20
  11. '0b10100'
  12. >>>
  1. print(bin(4))
  2. print(bin(0xff))
  3. print(bin(0o24))

bin()与用户定义的对象


要将bin()与用户定义的对象一起使用,我们必须首先重载__index__()方法。 在切片和索引的上下文中,__index__()方法用于将对象强制为整数。 例如,考虑以下内容:

  1. >>>
  2. >>> l = [1, 2, 3, 4, 5]
  3. >>>
  4. >>> x, y = 1, 3
  5. >>>
  6. >>>
  7. >>> l[x]
  8. 2
  9. >>>
  10. >>>
  11. >>> l[y]
  12. 4
  13. >>>
  14. >>>
  15. >>> l[x:y]
  16. [2, 3]
  17. >>>
  1. l = [1, 2, 3, 4, 5]
  2. x, y = 1, 3
  3. print(l[x])
  4. print(l[y])
  5. print(l[x:y])

当我们使用索引和切片访问列表中的项目时,内部 Python 会调用int对象的__index__()方法。

  1. >>>
  2. >>> l[x.__index__()] # same as l[x]
  3. 2
  4. >>>
  5. >>>
  6. >>> l[y.__index__()] # same as l[y]
  7. 4
  8. >>>
  9. >>>
  10. >>> l[x.__index__():y.__index__()] # # same as l[x:y]
  11. [2, 3]
  12. >>>
  1. l = [1, 2, 3, 4, 5]
  2. x, y = 1, 3
  3. print(l[x.__index__()])
  4. print(l[y.__index__()])
  5. print(l[x.__index__():y.__index__()])

除了bin()之外,在对象上调用hex()oct()时也会调用__index__()方法。 这是一个例子:

  1. >>>
  2. >>> class Num:
  3. ... def __index__(self):
  4. ... return 4
  5. ...
  6. >>>
  7. >>> l = [1, 2, 3, 4, 5]
  8. >>>
  9. >>>
  10. >>> n1 = Num()
  11. >>>
  12. >>>
  13. >>> bin(n1)
  14. 0b100
  15. >>>
  16. >>>
  17. >>> hex(n1)
  18. 0x4
  19. >>>
  20. >>>
  21. >>> oct(n1)
  22. 0o4
  23. >>>
  24. >>>
  25. >>> l[n1]
  26. 5
  27. >>>
  28. >>>
  29. >>> l[n1.__index__()]
  30. 5
  31. >>>
  1. class Num:
  2. def __index__(self):
  3. return 4
  4. l = [1, 2, 3, 4, 5]
  5. n1 = Num()
  6. print(bin(n1))
  7. print(hex(n1))
  8. print(oct(n1))
  9. print(l[n1])
  10. print(l[n1.__index__()])