You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何将字符串形式的bytes数据转换回原bytes类型?

解决方案

你遇到的情况本质是直接将bytes对象的字符串表示(也就是repr(key)的结果)存入了Cookie,最终读出来的是带b'前缀、引号包裹的字符串格式字面量,有两种常用方案可以还原为原始bytes类型密钥:


方法1:字符串切片处理(无需额外导入,最安全)

不需要依赖任何第三方库,手动修剪字符串多余字符即可完成还原:

# 假设从Cookie读取到的内容为
cookie_key = "b'BNdXABgpo_Y5PH3VNpSfAJo8Y7A-vdTTIN5WJxYRgpk='"

# 第一步:去除外层的双引号(如果实际读取结果没有外层引号可以跳过这步)
trimmed_key = cookie_key.strip('"')
# 第二步:去掉开头的`b'`和结尾的`'`,提取核心密钥字符串
raw_key_str = trimmed_key[2:-1]
# 第三步:编码为bytes类型得到原始密钥
original_key = raw_key_str.encode('utf-8')

方法2:字面量解析(代码更简洁)

用Python标准库的ast.literal_eval,可以安全解析Python字面量字符串,直接还原为原bytes对象,不需要手动处理字符串切片:

import ast

cookie_key = "b'BNdXABgpo_Y5PH3VNpSfAJo8Y7A-vdTTIN5WJxYRgpk='"
original_key = ast.literal_eval(cookie_key)

最佳实践建议

后续存储Fernet密钥到Cookie时,不要直接存bytes对象的字符串表示,提前解码为纯字符串存储更省事:

# 存储时处理
key = Fernet.generate_key()
cookie_value = key.decode('utf-8') # 直接存这个值到Cookie

# 读取时直接转码即可
original_key = cookie_value.encode('utf-8')

内容的提问来源于stack exchange,提问作者Utkarsh Tyagi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 12:57:01