Python – 元组与字节整数的相互转换


元组是有序的、有限的用于收集数据的序列。它可以用圆括号 () 表示。字节整数是一个简单的数字,没有小数或分数值。在 Python 中,有一些内置函数,例如 from_bytes()、bytes()、unpack() 和 enumerate() 可用于元组与字节整数的相互转换。

语法

以下语法在示例中使用

from_bytes()

from_bytes() 是 Python 中的一个内置函数,它接受两个特定参数

  • bytes() - bytes() 也是一个内置函数,它定义了不可变的整数序列。

  • byteorder - byteorder 确定整数表示,其值设置为 big。

bytes()

bytes() 是 Python 中的一个内置函数,它返回字节对象。字节对象是不可变的整数序列,范围在 0-256 之间。

unpack()

unpack() 是 Python 的一个内置函数,它允许我们提供可迭代对象(如列表、集合等)的所有数据类型。

enumerate()

enumerate() 是 Python 中的一个内置函数,它跟踪每个给定索引元素的特定迭代。

使用 from_bytes()

在下面的示例中,我们将首先将元组存储在变量 tup_val 中。然后使用内置函数 from_bytes,它接受两个参数 - bytes() 和 byteorder 来解决将元组转换为字节整数的问题,并将其存储在变量 byte_int 中。最后,我们使用变量 byte_int 打印结果。

示例

tup_val = (45, 5, 55, 19, 20)
byte_int = int.from_bytes(bytes(tup_val), byteorder='big')
print("Conversion of tuple into byte integer:\n", byte_int)

输出

 Conversion of tuple into byte integer:
 193361023764

使用 Struct 模块

在下面的示例中,程序使用 struct 模块来更改元组到字节整数的转换。然后在变量 tuple_val 中创建元组。接下来,使用带有 struct 模块的内置函数 unpack(),它接受参数:

  • !i - 该值应表示为单个带符号字节或最低有效字节。

  • struct.pack('!BBBB', *tuple_val) - struct 是模块的名称,它与内置函数 pack() 相关联,该函数打包了 4 个无符号字节。无符号字节的值范围在 0-255 之间。

最后,我们使用变量 byte_int 打印结果。

示例

import struct
tuple_val = (10, 20, 30, 40)
byte_int = struct.unpack('!i', struct.pack('!BBBB', *tuple_val))[0]
print("Conversion of tuple into byte integer:\n", byte_int)

输出

 Conversion of tuple into byte integer:
 169090600

使用 enumerate() 函数

在下面的示例中,程序首先将元组元素存储在变量 tuple_val 中。接下来,使用内置函数 sum() 和 enumerate() 计算元组字节的转换并生成结果。

示例

tuple_val = (45, 5, 55, 19, 20)
byte_int = sum((x << (8 * i)) for i, x in enumerate(tuple_val[::-1]))
print("Conversion of tuple into byte integer:\n", byte_int)

输出

 Conversion of tuple into byte integer:
 193361023764

结论

我们讨论了三种将元组元素转换为字节整数的不同方法。使用了各种内置方法,例如 enumerate()、unpack() 等,这些方法有助于设置特定的条件和操作。此程序的一些应用包括操作系统、数字代码等。

更新于:2023年8月16日

1K+ 次浏览

启动您的 职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.