如何将Python的bytes数组仅输出为十六进制值且不解码字符
Python查看bytes原始十六进制值的实现方案
Python默认打印bytes对象时,会将可打印ASCII范围内的字节自动转换为对应字符显示,仅不可打印字符才会保留\xXX格式的十六进制展示,你可以通过以下几种方案实现全字节原始十六进制输出:
方案1:自定义遍历格式化(最推荐)
无额外依赖,适配所有场景,直接将每个字节格式化为\xXX格式:
x = b"\x61" # 遍历每个字节,格式化为两位十六进制并拼接\x前缀 formatted = ''.join([f'\\x{byte:02x}' for byte in x]) # 输出时包裹bytes的标准格式标识 print(f'b"{formatted}"')
运行输出结果:
b"\x61"
方案2:使用binascii模块处理
如果需要先获取纯十六进制字符串再做格式化,可以用内置binascii模块:
import binascii x = b"\x61" # 先获取无分隔符的十六进制串 raw_hex = binascii.hexlify(x).decode('ascii') # 按每两位拆分拼接\x前缀 formatted = ''.join([f'\\x{raw_hex[i:i+2]}' for i in range(0, len(raw_hex), 2)]) print(f'b"{formatted}"')
方案3:仅获取纯十六进制串(无\x前缀)
如果不需要\x前缀,只需要原始十六进制字符,直接调用bytes对象的hex方法即可:
x = b"\x61" print(x.hex())
输出结果:
61
内容的提问来源于stack exchange,提问作者OrenIshShalom
相关产品推荐
相关产品推荐

