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'\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)
复制代码

结果:

 

dlc、字符str转成编码后的str

用json库的dumps和loads进行转化

import json
s = '\\u9500\\u552e'
print(json.loads(f'"{s}"'))

 

posted @   二律背反GG  阅读(765)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
点击右上角即可分享
微信分享提示