python將十六進(jìn)制值轉(zhuǎn)換為字符串的三種方法
Python 中提供了幾種將十六進(jìn)制值轉(zhuǎn)換為字符串的方法,下面將介紹其中的三種方法。
1. 使用 bytes.fromhex() 方法
bytes.fromhex() 方法可以將十六進(jìn)制字符串轉(zhuǎn)換為字節(jié)串,然后再將字節(jié)串轉(zhuǎn)換為字符串。例如:
hex_str = "48656c6c6f20576f726c64"
byte_str = bytes.fromhex(hex_str)
str_result = byte_str.decode("utf-8")
print(str_result) # 輸出:Hello World其中,bytes.fromhex() 方法將十六進(jìn)制字符串轉(zhuǎn)換為字節(jié)串,byte_str.decode("utf-8") 方法將字節(jié)串轉(zhuǎn)換為字符串。
需要注意的是,bytes.fromhex() 方法只能處理沒有空格的十六進(jìn)制字符串,如果輸入的十六進(jìn)制字符串包含空格,需要先將空格刪除,例如:
hex_str = "48 65 6c 6c 6f 20 57 6f 72 6c 64"
hex_str = hex_str.replace(" ", "") # 刪除空格
byte_str = bytes.fromhex(hex_str)
str_result = byte_str.decode("utf-8")
print(str_result) # 輸出:Hello World2. 使用 binascii.unhexlify() 方法
binascii.unhexlify() 方法可以將十六進(jìn)制字符串轉(zhuǎn)換為字節(jié)串,然后再將字節(jié)串轉(zhuǎn)換為字符串。例如:
import binascii
hex_str = "48656c6c6f20576f726c64"
byte_str = binascii.unhexlify(hex_str)
str_result = byte_str.decode("utf-8")
print(str_result) # 輸出:Hello World其中,binascii.unhexlify() 方法將十六進(jìn)制字符串轉(zhuǎn)換為字節(jié)串,byte_str.decode("utf-8") 方法將字節(jié)串轉(zhuǎn)換為字符串。
需要注意的是,binascii.unhexlify() 方法只能處理沒有空格的十六進(jìn)制字符串,如果輸入的十六進(jìn)制字符串包含空格,需要先將空格刪除,例如:
import binascii
hex_str = "48 65 6c 6c 6f 20 57 6f 72 6c 64"
hex_str = hex_str.replace(" ", "") # 刪除空格
byte_str = binascii.unhexlify(hex_str)
str_result = byte_str.decode("utf-8")
print(str_result) # 輸出:Hello World3. 使用 codecs.decode() 方法
codecs.decode() 方法可以將十六進(jìn)制字符串直接轉(zhuǎn)換為字符串。例如:
import codecs
hex_str = "48656c6c6f20576f726c64"
str_result = codecs.decode(hex_str, "hex").decode("utf-8")
print(str_result) # 輸出:Hello World其中,codecs.decode() 方法將十六進(jìn)制字符串直接轉(zhuǎn)換為字節(jié)串,byte_str.decode("utf-8") 方法將字節(jié)串轉(zhuǎn)換為字符串。
需要注意的是,codecs.decode() 方法只能處理沒有空格的十六進(jìn)制字符串,如果輸入的十六進(jìn)制字符串包含空格,需要先將空格刪除,例如:
import codecs
hex_str = "48 65 6c 6c 6f 20 57 6f 72 6c 64"
hex_str = hex_str.replace(" ", "") # 刪除空格
str_result = codecs.decode(hex_str, "hex").decode("utf-8")
print(str_result) # 輸出:Hello World這三種方法都可以將十六進(jìn)制值轉(zhuǎn)換為字符串,選擇哪一種方法取決于你的使用場景和偏好。需要注意的是,如果十六進(jìn)制字符串不合法,這些方法都會拋出異常,需要對輸入的十六進(jìn)制字符串進(jìn)行合法性檢查。
附:Python -- 十六進(jìn)制與字符串的相互轉(zhuǎn)換
# 字符串與十六進(jìn)制的轉(zhuǎn)義
# coding utf-8
char = input("請輸入字符串")
_char = char.encode().hex()
print(char + " 的十六進(jìn)制序列是:" + _char)
_char1 = bytes.fromhex(_char).decode()
print(_char + " 十六進(jìn)制轉(zhuǎn)字符串是 :" + _char1)
總結(jié)
到此這篇關(guān)于python將十六進(jìn)制值轉(zhuǎn)換為字符串的三種方法的文章就介紹到這了,更多相關(guān)python十六進(jìn)制值轉(zhuǎn)字符串內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python基于SciPy庫實現(xiàn)統(tǒng)計分析與建模
SciPy是一個強(qiáng)大的Python庫,提供了豐富的科學(xué)計算和數(shù)據(jù)分析工具,本文我們將探討如何使用Python和SciPy庫進(jìn)行統(tǒng)計分析和建模,感興趣的可以學(xué)習(xí)一下2023-06-06

