在 Python 中將十六進位制轉換為 ASCII
本教程將探討在 Python 中將十六進位制字串轉換為 ASCII 字串的各種方法。假設我們有一個用十六進位制形式 68656c6c6f
編寫的字串,我們想將其轉換為一個 ASCII 字串,這個字串將是 hello
,因為 h
等於 ASCII 碼中的 68
,而 e
等於 64
,l
是 6c
,而 o
是 6f
。
我們可以使用以下方法在 Python 中將十六進位制字串轉換為 ASCII 字串。
在 Python 中使用 decode()
方法將十六進位制轉換為 ASCII
Python 2 中的 string.decode(encoding, error)
方法將已編碼的字串作為輸入,並使用 encoding
引數中指定的編碼方案對其進行解碼。error
引數指定在發生錯誤時可以使用的錯誤處理方案,可以是 strict
,ignore
和 replace
。
因此,要將十六進位制字串轉換為 ASCII 字串,我們需要將 string.decode()
方法的 encoding
引數設定為 hex
。下面的示例程式碼演示瞭如何使用 string.decode()
方法在 Python 2 中將十六進位制轉換為 ASCII。
string = "68656c6c6f"
string.decode("hex")
輸出:
hello
在 Python 3 中,bytearray.decode(encoding, error)
方法將位元組陣列作為輸入,並使用 encoding
引數中指定的編碼方案對其進行解碼。
要在 Python 3 中解碼字串,我們首先需要將字串轉換為位元組陣列,然後使用 bytearray.decode()
方法對其進行解碼。bytearray.fromhex(string)
方法可用於首先將字串轉換為位元組陣列。
下面的示例程式碼演示瞭如何使用 bytearray.decode()
和 bytearray.fromhex(string)
方法在 Python 3 中將十六進位制字串轉換為 ASCII 字串:
string = "68656c6c6f"
byte_array = bytearray.fromhex(string)
byte_array.decode()
輸出:
hello
在 Python 中使用 codecs.decode()
方法將十六進位制轉換為 ASCII
codecs.decode(obj, encoding, error)
方法類似於 decode()
方法。它接受一個物件作為輸入,並使用 encoding
引數中指定的編碼方案對其進行解碼。error
引數指定發生錯誤時要使用的錯誤處理方案。
在 Python 2 中,codecs.decode()
返回一個字串作為輸出,而在 Python 3 中,它返回一個位元組陣列。下面的示例程式碼演示瞭如何使用 codecs.decode()
方法將十六進位制字串轉換為 ASCII 以及如何使用 str()
方法將返回的位元組陣列轉換為字串。
import codecs
string = "68656c6c6f"
binary_str = codecs.decode(string, "hex")
print(str(binary_str, "utf-8"))
輸出:
hello