Python int 的位函数 (bit_length,to_bytes 和 from_bytes)

17 Mar 2025 | 4 分钟阅读

什么是位操作函数?

应用于每个单独的位而不是整个数字的函数称为位操作函数。 我们可以用二进制位 (0 和 1) 来表示每个数字。

如果我们以二进制格式表示任何数字,我们就可以对其应用位操作函数,但有些位操作函数可以应用于整数数据类型。

整数或 int 数据类型在 Python 中实现了 numbers 类的 Integral 子类。

主要的位操作函数是:

  • bit_length
  • to_bytes
  • from_bytes

1. bit_length()

bit_length 函数返回表示数字的二进制格式所需的位数。 虽然我们可以通过添加前导零来用任意数量的位来表示任何数字,但它会返回排除前导零后的数字。

它还会忽略用于符号表示的位。

示例 1

输出

Python bit functions on int(bit_length,to_bytes and from_bytes)

说明

在上面的代码中,我们使用了三个整数变量。 对于每个变量,我们都应用了 bit_length() 位函数,该函数将返回表示该特定数字所需的位数。

第一个数字是五,可以表示为 32 位中的 0000000 00000000 00000000 00000101。 但此函数会删除前导零,因此它将数字表示为 101,这意味着我们只需要 3 位来表示 5。

第二个数字是 16,可以表示为 0000000 00000000 00000000 00010000

在 32 位中,我们可以将其表示为 10000,只需要 5 位。 同样,我们可以用 1000000 表示 32,只需要 6 位。

示例 2

bit_length() 函数用于负数

输出

Python bit functions on int(bit_length,to_bytes and from_bytes)

说明

在上面的代码中,我们取了两个整数,一个是正数,第二个是负数。 第一个数字是五,可以表示为 101,因此函数将返回 3。

第二个数字是 -5,在 32 位中可以用 2 的补码形式表示为 11111111 11111111 11111111 11111011。 这里,前 33 位表示数字的符号或称为符号位,接下来的 3 位表示数字。 因此,此函数会删除符号位,并将返回 011 的三作为答案。

2. to_bytes()

此函数返回表示给定整数的字节数组。

语法

length: 它表示此函数返回的字节长度。

byteorder: 这定义了我们想要的表示类型。 如果设置为 'big',则最高有效字节位于数组的开头;如果设置为 'little',则最高有效字节位于数组的末尾。

signed: 这是一个布尔参数,如果设置为 true,则表示数字使用 2 的补码形式。

示例 3

输出

Python bit functions on int(bit_length,to_bytes and from_bytes)

说明

在上面的代码中,我们使用了整数 69,并对其应用了 to_bytes() 函数。 我们为此使用了大端序表示,并且字节数组的大小为 10。

示例 4

输出

Python bit functions on int(bit_length,to_bytes and from_bytes)

说明

在上面的代码中,我们取了数字 18,并在小端序机器上用大小为 4 的字节数组表示它。

3. from_bytes()

此函数是 to_bytes() 函数的逆向操作,它以字节数组作为输入并返回等效的整数。

语法

示例 5

输出

Python bit functions on int(bit_length,to_bytes and from_bytes)

说明

在上面的代码中,我们使用了 from_bytes() 函数,并将其参数设置为字节数组和字节序为大端序。 因此,它返回 17 作为答案,因为在十六进制中,X11 表示 17。

示例 6

对于负数,我们需要将 signed 参数设置为 true。

输出

Python bit functions on int(bit_length,to_bytes and from_bytes)

说明

在上面的代码中,我们将 signed 参数设置为 true,以便将字节数组视为有符号数,它返回负数 -3841。