在 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