有時,我們可能會遇到需要處理異常數據類型轉換的問題。一種這樣的轉換可以是將字節列表(字節數組)轉換為 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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。