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

Python如何将含\x转义的Unicode字符串转换为对应byte字节串

问题原因

你定义的s_str是带r前缀的原始字符串,内部存储的是\、x、0、0这类字面字符序列,并非转义后的单字节值。使用raw_unicode_escape编码时,会将字符串中的每个字符直接映射为对应字节,其中\对应的字节为\x5c,因此最终结果会出现双反斜杠,本质是输入的字符串本身是转义序列的字面文本,而非已转义的字节表示。

解决方法

提供两种可靠的实现方案:

方案1:转义序列解析法

通过unicode_escape先解析字符串中的\x转义规则,再通过单字节的latin1编码转为目标bytes,latin1为1:1单字节映射,不会修改字节值:

s_str: str = r"\x00\x01\x00\xc0\x01\x00\x00\x00\x04"
# 解析\x转义序列
temp_str = s_str.encode("latin1").decode("unicode_escape")
# 转换为目标字节
s_bytes = temp_str.encode("latin1")

输出结果:b'\x00\x01\x00\xc0\x01\x00\x00\x00\x04',完全符合需求。

方案2:字面量解析法

使用Python内置的安全字面量解析工具ast.literal_eval,直接将字符串当做bytes字面量解析,安全性和可靠性更高:

from ast import literal_eval

s_str: str = r"\x00\x01\x00\xc0\x01\x00\x00\x00\x04"
s_bytes = literal_eval(f"b'{s_str}'")

内容的提问来源于stack exchange,提问作者Tereso del Río Almajano

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:39:02