如何将数据库返回的字节格式字符串转换为bytes类型?
将字符串形式的bytes字面量转换为真实bytes类型
方法1:使用ast.literal_eval(推荐)
这是最安全的方案,仅解析Python字面量,无代码执行风险。
import ast result = "b'\x00\x00\x00\x00\x07\x80\x00\x03'" a = ast.literal_eval(result) print(type(a)) # 输出:<class 'bytes'> print(a) # 输出:b'\x00\x00\x00\x00\x07\x80\x00\x03'
方法2:手动处理字符串后编码
无需导入模块,手动剥离字面量标识后用latin-1编码转换(该编码可将每个Unicode字符直接映射为对应字节,适配这类二进制转义字符串)。
result = "b'\x00\x00\x00\x00\x07\x80\x00\x03'" # 去掉开头的"b'"和结尾的"'" raw_str = result[2:-1] a = raw_str.encode('latin-1') print(type(a)) # 输出:<class 'bytes'> print(a) # 输出:b'\x00\x00\x00\x00\x07\x80\x00\x03'
避坑提示
- 禁止使用
eval():尽管eval(result)也能得到结果,但它会执行任意代码,若字符串来自不可信来源会引发安全问题。 - 保证输入格式合规:两种方法都要求输入严格符合Python bytes字面量格式(以
b'开头、'结尾,中间是合法字节转义序列)。
内容的提问来源于stack exchange,提问作者Corvych
相关产品推荐
相关产品推荐

