Python bin() 语法
bin() 是 Python 的一个内置函数,它用于将其他进制整数转换为二进制整数。其中,bin 是 “binary(二进制)” 的缩写。
语法:
bin(x)说明:
bin() 接收单个参数。
x(必选):必须是一个整数,它可以是任意其他进制的整数(如 10 进制、8 进制、16 进制等),或实现了 __index__() 方法的自定义对象。
bin() 函数返回的是一个字符串,该字符串包含整数参数的二进制表示,前缀为 “0b”。如果你不想要这个前缀,可以使用字符串切片(如 bin(x)[2:])或 format() 方法(如 '{:b}'.format(x))。
注意:
- bin() 函数返回的是一个字符串,而不是一个数字类型。
- 负数的二进制表示采用的是 “补码” 形式,具体取决于 Python 解释器的实现和整数的位宽。在 CPython 中,负数的 bin() 结果通常会有一个负号,然后是其绝对值的二进制表示。
Python bin() 摘要
| 使用频率 | 低 |
|---|---|
| 官方文档 | 查看 |
Python bin() 示例
接下来,我们通过几个简单的例子来讲解一下 Python bin() 函数是如何使用的。
示例 1:bin() 基本用法
n = 100
result = bin(n)
print(result)
print(type(result))运行结果如下。
0b1100100
<class 'str'>分析:
在上面例子中,整数 100 被转换为二进制字符串 “1100100”,然后再加上前缀 “0b”,最终返回的字符串是 “0b1100100”。
如果想要去除 “0b” 前缀,我们可以使用字符串切片的方式来实现,请看下面例子。
示例 2:去除 “0b” 前缀
# 方式 1:严谨的切片(判断正负号)
def int_to_bin_slice(n):
s = bin(n)
if n >= 0:
return s[2:]
else:
return '-' + s[3:] # 保留负号,跳过 '0b'
# 方式 2:更推荐的 Pythonic 做法(使用 format)
def int_to_bin_format(n):
return format(n, 'b')
print(int_to_bin_slice(-10))
print(int_to_bin_format(-10))运行结果如下。
-1010
-1010示例 3:bin() 处理负数
print(bin(-10))
print(bin(0))运行结果如下。
-0b1010
0b0分析:
如果 bin() 的参数是负数,则会保留符号位。如果 bin() 的参数是 0 的特殊情况,则会返回 0b0。注意,二进制表示法不适用于浮点数。
深入了解 bin()
如果参数不是一个整数(即 int 对象),那么执行 bin() 函数就会抛出 TypeError 异常。当然了,我们也可以在类中自定义 __index__() 方法并返回一个整数,那么执行 bin() 函数就会返回该整数。
示例 4:bin() 的参数不是整数
s = 'lvyenet'
result = bin(s)
print(result)运行结果如下。
(报错) TypeError: 'str' object cannot be interpreted as an integer示例 5:定义对象的 __index__() 方法
class MyType:
def __index__(self):
return 0
a = MyType()
print(bin(a))运行结果如下。
0b0Python 进制转换函数
对于 Python 来说,它有以下 4 个进制转换函数。
bin():将其他进制整数转换为 2 进制整数。oct():将其他进制整数转换为 8 进制整数。hex():将其他进制整数转换为 16 进制整数。format():将值格式化为特定格式的字符串。
| 函数 | 前缀 | 输入 | 输出 |
|---|---|---|---|
| bin() | 0b | 15 | '0b1111' |
| oct() | 0o | 15 | '0o17' |
| hex() | 0x | 15 | '0xf' |
| format() | 无 | 15 | '1111'(使用 'b' 时) |
