哈尔滨网站优化,wordpress批量分类,活动软文模板,wordpress设计网站在Python中#xff0c;bytearray 是一个可变序列#xff0c;用于表示一个字节数组。与不可变的 bytes 类型相比#xff0c;bytearray 允许你修改其内容。你可以通过索引来访问和修改 bytearray 中的元素#xff0c;也可以添加或删除元素。
使用 bytearray 的一些示例…在Python中bytearray 是一个可变序列用于表示一个字节数组。与不可变的 bytes 类型相比bytearray 允许你修改其内容。你可以通过索引来访问和修改 bytearray 中的元素也可以添加或删除元素。
使用 bytearray 的一些示例
# 创建一个空的 bytearrayba bytearray()print(ba) # 输出: bytearray(b)# 创建一个包含初始值的 bytearrayba bytearray([0x11, 0x22, 0x33])print(ba) # 输出: bytearray(b\x11\x22\x33)# 访问 bytearray 中的元素print(ba[0]) # 输出: 170x11 的十进制表示# 修改 bytearray 中的元素ba[1] 0x44print(ba) # 输出: bytearray(b\x11D\x33)其中 D 是 0x44 的 ASCII 字符# 添加元素到 bytearray 的末尾ba.append(0x55)print(ba) # 输出: bytearray(b\x11D\x33U)其中 U 是 0x55 的 ASCII 字符# 从 bytearray 中删除元素del ba[2]print(ba) # 输出: bytearray(b\x11D\x55)# 将 bytes 转换为 bytearrayb b\x01\x02\x03ba bytearray(b)print(ba) # 输出: bytearray(b\x01\x02\x03)# 将 bytearray 转换为 bytesb bytes(ba)print(b) # 输出: b\x01\x02\x03
在上面的示例中你可以看到如何使用 bytearray 来存储和操作字节序列。这对于需要频繁修改字节数据的场景特别有用因为 bytes 类型是不可变的每次修改都需要创建一个新的 bytes 对象。而 bytearray 允许你原地修改数据从而提高性能。
数组的长度
# 创建一个bytearray
app_buf bytearray([0x11, 0x22, 0x33]) # 输出bytearray的长度
print(len(app_buf)) # 输出: 3
数组打印
注意如果数组里的内容为 字符直接用print 打印就会直接打印成字符!例如
ba[1] 0x44 print(ba) # 输出: bytearray(b\x11D\x33)其中 D 是 0x44 的 ASCII 字符 十六进制方式打印数组
要以十六进制的方式打印bytearray中的每个字节你可以使用列表推导式list comprehension结合format函数或f-string格式化字符串字面量来格式化每个字节。以下是一些示例
使用循环和直接打印 app1_buf bytearray([0x11,0x23,0x63])
for byte in app1_buf:print(f{byte:02X}, end )
使用列表推导式和format函数
app_buf bytearray([0x11, 0x22, 0x33])
hex_values [{:02X}.format(byte) for byte in app_buf]
print( .join(hex_values)) # 输出: 11 22 33
使用列表推导式和f-stringPython 3.6
app_buf bytearray([0x11, 0x22, 0x33])hex_values [f{byte:02X} for byte in app_buf]print( .join(hex_values)) # 输出: 11 22 33
在这两个示例中我们都创建了一个列表推导式来遍历bytearray中的每个字节并使用format函数或f-string将其格式化为两位的十六进制字符串。然后我们使用join方法将这些字符串连接成一个用空格分隔的字符串并打印出来。
十进制打印数组
如果你想要以十进制的方式打印bytearray中的每个字节你可以直接遍历bytearray并打印每个字节的值因为Python在默认情况下会以十进制打印小的整数。但是如果你想要确保它们是作为十进制数明确显示的特别是当与其他数据混合时你可以使用format函数或f-string来指定格式。
以下是一些示例
使用循环和直接打印
app_buf bytearray([0x11, 0x22, 0x33])
for byte in app_buf:
print(byte) # 直接打印默认为十进制
# 输出:
# 17
# 34
# 51
使用列表推导式和format函数虽然在这种情况下可能不是必需的但为了一致性
app_buf bytearray([0x11, 0x22, 0x33])
decimal_values [{}.format(byte) for byte in app_buf]
print( .join(decimal_values)) # 使用 连接成字符串
# 输出: 17 34 51
使用列表推导式和f-string
app_buf bytearray([0x11, 0x22, 0x33])decimal_values [f{byte} for byte in app_buf]print( .join(decimal_values)) # 使用 连接成字符串# 输出: 17 34 51
在这些示例中你可以看到如何遍历bytearray中的每个字节并直接打印它们默认为十进制或者使用列表推导式和字符串格式化来创建一个包含十进制值的字符串列表然后将其连接成一个用空格分隔的字符串。