📜  十六进制到字符串 python (1)

📅  最后修改于: 2023-12-03 15:07:19.851000             🧑  作者: Mango

十六进制到字符串 Python

如果你需要将十六进制数据转换为字符串,Python提供了一些方法来解决这个问题。下面我们将会介绍这些方法。

方法一:使用binascii模块
import binascii

hex_string = '68656c6c6f20776f726c64' # 十六进制字符串
byte_string = binascii.unhexlify(hex_string) # 将十六进制字符串转换为字节串
string = byte_string.decode('utf-8') # 将字节串转换为字符串

print(string) # 输出 'hello world'
  • 首先,我们使用binascii.unhexlify()将十六进制字符串转换为字节串。注意,unhexlify()方法返回的是一个字节串,所以需要使用decode()将其转换为字符串。
  • decode()的参数指定了使用的编码,这里我们使用UTF-8。
方法二:使用bytes.fromhex()方法

如果你正在使用Python 3.x版本,则可以使用bytes.fromhex()方法来转换十六进制字节串。

hex_string = '68656c6c6f20776f726c64' # 十六进制字符串
byte_string = bytes.fromhex(hex_string) # 将十六进制字符串转换为字节串
string = byte_string.decode('utf-8') # 将字节串转换为字符串

print(string)
方法三:使用struct.unpack()
import struct

hex_string = '68656c6c6f20776f726c64' # 十六进制字符串
byte_string = bytes.fromhex(hex_string) # 将十六进制字符串转换为字节串

# 使用struct.unpack()方法将字节串转换为字符串
# '11s'代表长度为11,格式为字符串
string = struct.unpack('11s', byte_string)[0].decode('utf-8')

print(string)

使用struct.unpack()可以按照一定的格式将字节串解析成特定的数据类型。在这个例子中,我们只需要将字节串转换成字符串,所以使用格式字符串'11s'

说明:

  • binascii模块提供了十六进制数据和其他二进制数据之间的转换功能。
  • bytes.fromhex()方法是将十六进制字符串转换为字节串的简便方法。
  • struct.unpack()方法可以按照特定的格式解析字节串,提取其中的数据。