在 Python 中將十六進位制轉換為 ASCII

Muhammad Waiz Khan 2023年1月30日
  1. 在 Python 中使用 decode() 方法將十六進位制轉換為 ASCII
  2. 在 Python 中使用 codecs.decode() 方法將十六進位制轉換為 ASCII
在 Python 中將十六進位制轉換為 ASCII

本教程將探討在 Python 中將十六進位制字串轉換為 ASCII 字串的各種方法。假設我們有一個用十六進位制形式 68656c6c6f 編寫的字串,我們想將其轉換為一個 ASCII 字串,這個字串將是 hello,因為 h 等於 ASCII 碼中的 68,而 e 等於 64l6c,而 o6f

我們可以使用以下方法在 Python 中將十六進位制字串轉換為 ASCII 字串。

在 Python 中使用 decode() 方法將十六進位制轉換為 ASCII

Python 2 中的 string.decode(encoding, error) 方法將已編碼的字串作為輸入,並使用 encoding 引數中指定的編碼方案對其進行解碼。error 引數指定在發生錯誤時可以使用的錯誤處理方案,可以是 strictignorereplace

因此,要將十六進位制字串轉換為 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

相關文章 - Python ASCII

相關文章 - Python Hex