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

Python将Hex字符串转换为Byte并逐行打印字节数值报错求助

问题解决方法

错误原因

'ascii' codec can't decode byte 0x80 in position 2: ordinal not in range(128)
出现该报错的核心原因是你不需要将字节串解码为ASCII字符串:你的字节数据中存在大量数值超过127的字节,本身就不符合ASCII编码规则,且你的需求是打印每个字节的数值,直接遍历字节串即可,无需做解码操作。

注意事项

你提供的Hex字符串Str0长度为257位,属于非法的Hex格式(每2个Hex字符对应1个字节,总长度必须为偶数),请先确认是否输入时多写了末尾的0,如果是多余字符可先做切片处理。

正确实现代码

Str0 = '04008020546c359986812644420e453113e209afeaaeeb316f3a07000000000000000000b8fa13b3fca087c1456daac626ab9b8a47eae821a326f17e0ffffc15433df709b0f718610b1812175a5c9544800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000280'
# 先处理Hex字符串为偶数长度(根据你的实际数据调整,此处假设末尾0为多余字符)
Str0 = Str0[:-1]
# 转换为字节串,该步骤你原本的写法是正确的
bytes_obj = bytes.fromhex(Str0)
# 逐行打印每个字节的信息,可根据需要调整输出格式
for idx, val in enumerate(bytes_obj):
    # 同时打印索引、十进制数值、十六进制数值
    print(f"第{idx}个字节:十进制={val} 十六进制=0x{val:02X}")

输出示例(前几行)

  • 第0个字节:十进制=4 十六进制=0x04
  • 第1个字节:十进制=0 十六进制=0x00
  • 第2个字节:十进制=128 十六进制=0x80
  • 第3个字节:十进制=32 十六进制=0x20

内容的提问来源于stack exchange,提问作者J.Doe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:54:01