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

Python如何将字节数组按位置与字符形式分两列打印?

问题:如何将bytes数组按「字节序号、字节字符」格式打印?

我有一个较长的bytes数组,需要逐一检查每个位置的数值,希望将其以「字节序号、字节字符」的两列格式打印。目前编写的代码会将字节以整数形式输出,示例代码与期望输出如下:

示例代码

bytes = b'hola\x00chau'

print(bytes)
for i,byte in enumerate(bytes):
    print(i,byte)

期望输出

b'hola\x00chau'
0 h
1 o
2 l
3 a
4 \x00
5 c
6 h
7 a
8 u

解决方案

可以通过将单个字节整数转回bytes对象,再利用repr()获取其带转义的字符串表示来实现:

# 避免使用bytes作为变量名(它是Python内置类型)
bytes_data = b'hola\x00chau'

print(bytes_data)
for idx, byte_val in enumerate(bytes_data):
    # 把单个字节整数转成bytes对象,再截取repr结果中去掉前后的b''部分
    char_str = repr(bytes([byte_val]))[2:-1]
    print(idx, char_str)

原理说明

遍历bytes对象时,每个元素是对应的ASCII整数值。我们将单个整数重新包装成长度为1的bytes对象后,repr()会自动为不可打印字符生成标准转义字符串(比如\x00),对可打印字符则直接返回字符本身,最后截取掉repr()结果前后的b'和',就能得到期望的格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 04:20:32