本文简单整理一下各种情况下,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'\xabA\x9f_\xf3\t\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)
结果: