py3 bytes和str互相转换方法

本文简单整理一下各种情况下,bytes和str转换的方法。

一、编/解码

a = "测试用例".encode("utf-8")
print(a, type(a))
b = a.decode("utf-8")
print(b, type(b))

没什么好说的,正常的bytes都是str编码而成的,正常编/解码就成。

二、强制转换

参考:https://www.zhihu.com/question/276855318/answer/390122533

逼不得已的情况下,可以使用强制转换

Hex或Unicode反斜杠转义存在于字符串中使用codecs.escape_decode恢复

# 有些加密是对字节串加密的
# 通常加密后的结果无法解码,因为是乱码
# 这里假设一个乱码字节串
a = b'xabAx9f_xf3	x06I'
print(a, type(a))
b = str(a)
print(b, type(b))
import codecs
aa = codecs.escape_decode(b[2:-1], 'hex-escape')[0]
print(aa, type(aa))
print(aa == a)

结果:

原文地址:https://www.cnblogs.com/end-emptiness/p/12443266.html