有时,我们可能会遇到需要处理异常数据类型转换的问题。一种这样的转换可以是将字节列表(字节数组)转换为 Python 中的十六进制字符串格式。让我们讨论一些可以做到这一点的方法。
使用String format()+String join()转换字节数组到十六进制字符串
上述函数的组合可用于执行此特定任务。 format 函数将字节转换为十六进制格式。格式中的“02” 用于填充所需的前导零。 join 函数允许将十六进制结果连接到字符串中。
Python3
# initializing list
test_list = [124, 67, 45, 11]
# printing original list
print("The original string is : " + str(test_list))
# using join() + format()
# Converting bytearray to hexadecimal string
res = ''.join(format(x, '02x') for x in test_list)
# printing result
print("The string after conversion : " + str(res))
输出:
The original string is : [124, 67, 45, 11] The string after conversion : 7c432d0b
使用 binascii.hexlify() 将字节数组转换为十六进制字符串
hexlify 的内置函数可用于执行此特定任务。建议将此函数用于此特定转换,因为它是 tailor-made 来解决此特定问题。
Python3
import binascii
# initializing list
test_list = [124, 67, 45, 11]
# printing original list
print("The original string is : " + str(test_list))
# using binascii.hexlify()
# Converting bytearray to hexadecimal string
res = binascii.hexlify(bytearray(test_list))
# printing result
print("The string after conversion : " + str(res))
输出:
The original string is : [124, 67, 45, 11] The string after conversion : 7c432d0b
使用bytes.hex()方法直接将bytearray转换为十六进制字符串:
逐步算法:
- 定义一个test_list,包含要转换的字节的字节数组。
- 使用bytearray类的hex()方法将bytearray转换为十六进制字符串。
- 将生成的十六进制字符串存储在变量中。
- 打印结果字符串。
Python3
# define the original bytearray
test_list = [124, 67, 45, 11]
byte_array = bytearray(test_list)
print("The string before conversion: " + str(test_list))
# convert bytearray to hexadecimal string
hex_string = byte_array.hex()
# print the result
print("The string after conversion: " + hex_string)
复杂度分析:
时间复杂度:O(n),其中 n 是输入字节数组的长度。 hex() 方法只是迭代字节数组中的字节,并将每个字节转换为其十六进制表示形式,这每个字节需要恒定的时间。
空间复杂度:O(n),因为我们正在创建一个新的字符串对象来存储生成的十六进制字符串。
推荐文章 - Python | bytearray() function
使用 struct 模块和 h 格式说明符:
- 导入结构体模块
- 定义原始字节数组
- 使用 struct.pack() 函数和 B 格式说明符将 bytearray 中的每个字节转换为二进制字符串
- 使用hex()方法将每个二进制字符串转换为十六进制字符串
- 使用 join() 方法将每个字节的十六进制字符串连接成单个字符串
- 打印原始字节数组和生成的十六进制字符串
Python3
import struct
# Define the original bytearray
test_list = [124, 67, 45, 11]
byte_array = bytearray(test_list)
# Convert bytearray to hexadecimal string using the struct module
hex_string = ''.join(struct.pack('B', x).hex() for x in byte_array)
# Print the result
print("The string before conversion: " + str(test_list))
print("The string after conversion: " + hex_string)
输出
The string before conversion: [124, 67, 45, 11] The string after conversion: 7c432d0b
时间复杂度:O(n),其中n是字节数组的长度
辅助空间:O(n),因为我们正在创建一个新字符串来保存连接的十六进制字符串
使用编解码器.encode()
- 导入编解码器模块。
- 定义表示原始字节数组的整数列表。
- 从整数列表创建一个字节数组。
- 使用 codecs.encode() 方法将 bytearray 转换为十六进制字符串,然后将其解码为常规字符串。
- 打印原始整数列表和转换后的十六进制字符串。
Python3
import codecs
#Define the original bytearray
test_list = [124, 67, 45, 11]
byte_array = bytearray(test_list)
#Convert bytearray to hexadecimal string using codecs.encode()
hex_string = codecs.encode(byte_array, 'hex').decode()
#Print the result
print("The string before conversion: " + str(test_list))
print("The string after conversion: " + hex_string)
输出
The string before conversion: [124, 67, 45, 11] The string after conversion: 7c432d0b
该代码的时间复杂度为 O(n),其中 n 是输入列表的长度。
该代码的辅助空间也是 O(n),因为它创建了一个新的字节数组和一个新的字符串
相关用法
- Python Bytes转Int用法及代码示例
- Python Bytes转String用法及代码示例
- Python Bytes转Json用法及代码示例
- Python Bytes转Bits用法及代码示例
- Python Binary转Hexadecimal用法及代码示例
- Python BaseException.with_traceback用法及代码示例
- Python BeautifulSoup find_next方法用法及代码示例
- Python BeautifulSoup next_elements属性用法及代码示例
- Python BeautifulSoup Tag stripped_strings属性用法及代码示例
- Python BeautifulSoup Tag contents属性用法及代码示例
- Python BeautifulSoup parent属性用法及代码示例
- Python BeautifulSoup append方法用法及代码示例
- Python BeautifulSoup previous_siblings属性用法及代码示例
- Python BeautifulSoup previous_sibling属性用法及代码示例
- Python BeautifulSoup Tag get_text方法用法及代码示例
- Python BeautifulSoup find_parent方法用法及代码示例
- Python BeautifulSoup replace_with方法用法及代码示例
- Python BeautifulSoup find_all_next方法用法及代码示例
- Python BeautifulSoup Tag descendants属性用法及代码示例
- Python BeautifulSoup extract方法用法及代码示例
- Python BeautifulSoup insert方法用法及代码示例
- Python BeautifulSoup Tag children属性用法及代码示例
- Python BeautifulSoup find_all方法用法及代码示例
- Python BeautifulSoup parents属性用法及代码示例
- Python BeautifulSoup find_previous_sibling方法用法及代码示例
注:本文由纯净天空筛选整理自manjeet_04大神的英文原创作品 Python | Convert Bytearray to Hexadecimal String。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。