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讀取eml文件并用正則表達(dá)式匹配郵箱的代碼
今天接到一個需求有一個同事離職了,但是留下了非常多的郵件,我需要將他的郵件進(jìn)行分類,只要郵件中以@xxx.com結(jié)尾的存放在文件夾中,否則放在另一個文件夾中,這篇文章主要介紹了python讀取eml文件并用正則匹配郵箱,需要的朋友可以參考下2022-11-11
Python實現(xiàn)PDF轉(zhuǎn)Word的方法詳解
由于PDF的文件大多都是只讀文件,有時候為了滿足可以編輯的需要通常可以將PDF文件直接轉(zhuǎn)換成Word文件進(jìn)行操作。本文為大家整理了一些實現(xiàn)方法,希望對大家有所幫助2023-02-02

