如何将整型 int 转换为字节 bytes
将整型 int
转换为字节 bytes
是将字节 bytes
转换为整型 int
的逆操作,本文中介绍的大多数的 int
到 bytes
的方法都是 bytes
到 int
方法的反向方法。
Python 2.7 和 3 中 int
到 bytes
转换的通用方法
你可以使用 Python struct 模块中的 pack
函数将整数转换为特定格式的字节。
>>> import struct
>>> struct.pack("B", 2)
'\x02'
>>> struct.pack(">H", 2)
'\x00\x02'
>>> struct.pack("<H", 2)
'\x02\x00'
struct.pack
函数中的第一个参数是格式字符串,它指定了字节格式比如长度,字节顺序(little/big endian)等。
Python 3 中新引入的 int
到 bytes
的转换方法
使用 bytes
来进行 int
到 bytes
的转换
在之前文章中提到过,bytes
是 Python 3 中的内置数据类型。你可以使用 bytes
轻松地将整数 0~255 转换为字节数据类型。
>>> bytes([2])
b'\x02'
通过 int.to_bytes()
方法将整型转换为字节类型
从 Python3.1 开始引入了一个引入了一个新的整数类方法 int.to_bytes()
。它是上一篇文章中讨论的 int.from_bytes()
反向转换方法。
>>> (258).to_bytes(2, byteorder="little")
b'\x02\x01'
>>> (258).to_bytes(2, byteorder="big")
b'\x01\x02'
>>> (258).to_bytes(4, byteorder="little", signed=True)
b'\x02\x01\x00\x00'
>>> (-258).to_bytes(4, byteorder="little", signed=True)
b'\xfe\xfe\xff\xff'
第一个参数是转换后的字节数据长度,第二个参数 byteorder
将字节顺序定义为 little 或 big-endian,可选参数 signed
确定是否使用二进制补码来表示整数。
运行速度比较
Python 3 中, 你有 3 种方法可以转换 int
为 bytes
,
-
bytes()
方法 -
struct.pack()
方法 -
int.to_bytes()
方法
我们将测试每种方法的执行时间以比较它们的性能,最后将会给出来提高程序运行速度的建议。
>>> import timeint
>>> timeit.timeit('bytes([255])', number=1000000)
0.31296982169325455
>>> timeit.timeit('struct.pack("B", 255)', setup='import struct', number=1000000)
0.2640925447800839
>>> timeit.timeit('(255).to_bytes(1, byteorder="little")', number=1000000)
0.5622947660224895
转换方法 | 执行时间(100 万次) |
---|---|
bytes() |
0.31296982169325455 s |
struct.pack() |
0.2640925447800839 s |
int.to_bytes() |
0.5622947660224895 s |
因此,请使用 struct.pack()
函数执行来执行整型到字节的转换以获得最佳执行性能,虽然它已在 Python 2 中引入了,生姜还是老的辣!
相关文章
在Python中将十六进制转换为字节
发布时间:2023/12/18 浏览次数:153 分类:Python
-
本教程介绍了如何在Python中将十六进制值转换为字节文字。十六进制,通常简写为hex,使用16个符号(0-9,a-f)表示值,与十进制的10个符号形成对比。例如,十进制中的1000在十六进制中是3E8。
Python 中如何将字节 bytes 转换为整数 int
发布时间:2023/12/18 浏览次数:56 分类:Python
-
本贴士介绍了 Python2 以及 3 中如何将 bytes 或者 bytes 数组转换为整数Bytes 数据类型的数值范围为 0~255(0x00~0xFF)。
如何在 Python 中从一个字符串中删除标点符号
发布时间:2023/12/18 浏览次数:85 分类:Python
-
本文介绍了在 Python 中从字符串中删除标点符号的方法。本教程讨论了在 Python 中从字符串中删除标点符号的方法。这是 NLP 预处理和清理文本数据时特别有用的一步。
如何在 Python 中将整数转换为字符串
发布时间:2023/12/18 浏览次数:194 分类:Python
-
本文介绍了如何在 Python 中将整数转换为字符串。它包括 str()函数和 f 格式。本文将介绍使用 Python 代码将整数转换成字符串的不同方法,如 str() 函数和 f 格式化方法。
如何在 Python 中替换字符串中的多个字符
发布时间:2023/12/18 浏览次数:195 分类:Python
-
本文演示了如何在 Python 中替换字符串中的多个字符。本教程向你展示了如何在 Python 中替换一个字符串中的多个字符。
如何在 Python 中删除字符串中的最后一个字符
发布时间:2023/12/18 浏览次数:88 分类:Python
-
Python 提供了通过使用 slicing 方法、for() 循环和 regex 方法从字符串和特定数量的字符中删除最后一个字符的支持。Python 字符串是一个用双引号或单引号括起来的字符组合。Python 提供了多个函数
如何在 Python 中从字符串中删除子字符串
发布时间:2023/12/18 浏览次数:162 分类:Python
-
本教程将演示如何在 Python 中从一组字符串中删除/替换一个特定的子字符串。本教程介绍了如何在 Python 中删除字符串中的子字符串。它将告诉我们,字符串不能只是被删除,而只是被替换。
Python 中错误 Address Already in Use
发布时间:2023/07/09 浏览次数:151 分类:Python
-
我们将通过示例介绍Python中何时出现 Address already in use 错误以及如何解决。Python 中的错误Address already in use 本文将讲述运行使用端口的程序时发生的Python堆栈错误。
Python 中错误 ValueError: Math Domain Error
发布时间:2023/07/09 浏览次数:355 分类:Python
-
在本篇文章中,我们的目标是探索解决 Python 中的 ValueError: math domain error 错误的不同方法。当编码方面数学(基础或高级)的使用存在固有缺陷时,Python 中通常会引发 ValueError: math domain error 错