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

Python反斜杠分隔十六进制串转字节对象异常排查与解决

Python 反斜杠分隔十六进制字符串转字节对象解决方案

两种操作结果差异的原因

两种写法的本质完全不同:

  • 直接写a = '\xEC\xA3\xBC...'时,\xXX是Python原生的十六进制转义序列,代表单个Unicode字符,对应码点为0xXX,比如\xEC对应U+00EC,整个字符串长度等于十六进制段的数量
  • 用replace('\\','\\x')得到的结果,是4个普通字符组成的序列:\、x、E、C,没有转义效果,整个字符串长度是十六进制段数量的4倍,自然编码后得不到预期结果。

解决方案

要实现'\EC\A3\BC\EC\8B\9D\ED\9A\8C\EC\82\AC'到对应字节对象的转换,有两种简便的实现方式:

方案1:直接提取十六进制串转换

字符串结构为固定的\XX分段,只需要去掉所有反斜杠得到连续十六进制字符串,直接用bytes.fromhex转换即可:

# 输入字符串,加r避免默认转义
subject = r'\EC\A3\BC\EC\8B\9D\ED\9A\8C\EC\82\AC'
# 去掉所有反斜杠得到连续十六进制串
hex_str = subject.replace('\\', '')
# 转换为字节对象
b = bytes.fromhex(hex_str)
# 解码得到最终结果
print(b.decode('utf-8'))  # 输出:주식회사

方案2:用codecs模块的escape_decode转换

也可以直接利用Python内置的转义解码能力实现:

import codecs

subject = r'\EC\A3\BC\EC\8B\9D\ED\9A\8C\EC\82\AC'
# 直接按转义规则解码为字节
b = codecs.escape_decode(subject)[0]
print(b.decode('utf-8'))  # 输出:주식회사

内容的提问来源于stack exchange,提问作者유호영

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 10:24:03