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

Python 2.7下十六进制ASCII字符串解码技术求助

解决Python 2.7下十六进制ASCII字符串解码问题

你的问题出在直接对输入的十六进制字符串调用decode('ASCII')——输入的是空格分隔的十六进制字符表示,不是已经编码的字节串,而且F1、88这类值超出了ASCII(0x00-0x7F)的范围,直接解码肯定报错。

正确的处理步骤应该是:

  • 把空格分隔的十六进制片段转换成对应的字节
  • 用支持扩展ASCII的编码(比如latin-1)解码
  • 剔除不需要的前缀和末尾空字符

以下是Python 2.7的可行代码:

# 输入的十六进制字符串
BResponse = 'F1 88 52 45 4D 41 2D 33 43 37 38 32 2D 42 42 00 00 00 00 00 00 00 00 00'

# 1. 拆分十六进制片段,转成对应的字符拼接成字节串
hex_parts = BResponse.split()
byte_str = ''.join(chr(int(part, 16)) for part in hex_parts)

# 2. 解码(用latin-1兼容扩展ASCII),然后去掉开头2个无效字符和末尾的空字符
result = byte_str.decode('latin-1')[2:].rstrip('\x00')

print(result)  # 输出: REMA-3C782-BB

代码说明:

  • split()把输入按空格拆成单个十六进制字符串列表
  • chr(int(part,16))把每个十六进制值转成对应的ASCII/Latin-1字符
  • decode('latin-1'):因为F1、88属于0x80-0xFF的扩展ASCII范围,ASCII编码不支持,latin-1可以完美映射这些值
  • [2:]跳过开头两个无效字符(对应输入的F1和88)
  • rstrip('\x00')去掉末尾所有的空字符(00对应的\x00)

内容的提问来源于stack exchange,提问作者Joseph Stalin Pillai

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 14:35:21