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

Python调用bytearray.fromhex()得到非预期输出的原因与解决办法

原因说明

Python 中 bytes、bytearray 类型的默认打印规则是:如果字节值属于可打印 ASCII 范围(0x20 ~ 0x7E),就直接显示对应的 ASCII 字符,只有不可打印的字节才会用 \x + 两位十六进制的格式展示。
你看到的r6对应两个字节:

  • 0x72 对应 ASCII 可打印字符 r
  • 0x36 对应 ASCII 可打印字符 6

这里只是输出展示形式和你的预期不符,字节数组本身存储的数值完全正确,没有转换错误。

实现预期输出的方法

方案1:自定义打印函数(不修改字节数组本身)

如果你只需要输出符合预期的展示格式,不需要改动原始字节数组的内容,可以自己封装打印逻辑:

def format_bytearray(ba):
    hex_part = ''.join(f'\\x{byte:02x}' for byte in ba)
    return f"bytearray(b'{hex_part}')"

# 测试你的代码
my_str1 = 'AA001404'
my_ba1 = bytearray.fromhex(my_str1)
my_str2 = 'AA007236'
my_ba2 = bytearray.fromhex(my_str2)

print(my_str1)
print(format_bytearray(my_ba1))
print(my_str2)
print(format_bytearray(my_ba2))

方案2:快速验证转换正确性

如果你需要确认转换结果和输入的十六进制字符串一致,可以直接调用字节数组的hex()方法:

print(my_ba2.hex()) # 输出结果为 aa007236,和输入的原始字符串完全匹配,可直接证明转换正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 13:00:02