如何用Python优雅实现字节数组的可读格式化输出(ASCII/十六进制)
优雅格式化字节数组的可读输出(Python实现)
给定字节数组:
b = bytes([0x00, 0x78, 0x6f, 0x58, 0x00, 0x4f, 0x30, 0x00])
我们需要将其格式化为:可打印ASCII字符直接显示对应字符,不可打印字节显示两位十六进制值,最终输出如下:
00 x o X 00 O 0 00
简洁Pythonic实现
用列表推导式快速生成格式化后的元素列表,再通过join拼接成最终字符串,代码如下:
b = bytes([0x00, 0x78, 0x6f, 0x58, 0x00, 0x4f, 0x30, 0x00]) # 生成格式化后的元素列表 formatted_items = [chr(byte) if 32 <= byte <= 126 else f"{byte:02X}" for byte in b] # 用两个空格拼接成结果字符串 print(' '.join(formatted_items))
代码说明
- 遍历字节数组时,直接判断字节是否在可打印ASCII范围(32-126):这个区间包含空格到波浪号的所有可打印字符,排除了0-31的控制字符和127的DEL字符。
- 对可打印字节用
chr()转成对应字符,不可打印字节用f-string格式化为两位大写十六进制(02X确保不足两位时补零)。 - 最后用
' '.join()将所有元素拼接成符合要求的字符串,这种写法简洁高效,完全符合Pythonic风格。
内容的提问来源于stack exchange,提问作者fearless_fool
相关产品推荐
相关产品推荐

