python用hex转出的16进制,解码后是乱码
时间: 2024-03-27 07:35:35 浏览: 65
python 文件读写 乱码
4星 · 用户满意度95%
如果您使用 `hex()` 函数将字符串转换为16进制字符串,然后使用 `bytes.fromhex()` 函数将其解码为字节串,但是结果是乱码,可能是因为您的字符串中包含了非ASCII字符,而 `hex()` 函数只会将ASCII字符转换为16进制表示。
要正确地将含有非ASCII字符的字符串转换为16进制并解码为字节串,可以使用 `binascii.hexlify()` 函数将字符串转换为16进制表示的字节串,然后使用 `binascii.unhexlify()` 函数将其解码为字节串。例如:
```python
import binascii
string = "你好"
hex_string = binascii.hexlify(string.encode('utf-8')).decode('utf-8')
print(hex_string) # 输出:e4bda0e5a5bd
decoded_string = binascii.unhexlify(hex_string).decode('utf-8')
print(decoded_string) # 输出:你好
```
在这个例子中,我们首先将字符串编码为utf-8字节串,然后使用 `binascii.hexlify()` 函数将其转换为16进制表示的字节串,并将其解码为字符串。然后我们使用 `binascii.unhexlify()` 函数将16进制字符串解码为字节串,再将其解码为字符串,这样就可以正确地得到原始字符串了。
阅读全文