为何b'\x30'输出显示为0?如何让字节串仅显示单个反斜杠?
解决Bytes对象输出单个反斜杠转义序列的问题
当你执行print(b'\x30')时,Python会把这个对应ASCII码'0'的字节直接显示为字符0——这是因为Python默认会将可打印的ASCII字节转换成对应字符输出,而非保留十六进制转义格式。
用br"\x30"创建的是原始字节串,里面的\x30是四个独立字节:\、x、3、0,所以print(s)时会显示b'\\x30'——这里的两个反斜杠是Python字符串表示里的转义规则,用来表示一个字面量反斜杠。
要实现输出单个反斜杠的十六进制转义格式,你可以手动将每个字节转换成\xXX格式后再拼接:
def format_bytes_to_escaped(b): # 遍历每个字节,格式化为两位十六进制的转义序列 escaped_parts = [f'\\x{byte:02x}' for byte in b] # 拼接成完整的bytes表示形式 return f"b'{''.join(escaped_parts)}'" # 测试示例 test_bytes = b'\x30\x31\x41' print(format_bytes_to_escaped(test_bytes)) # 输出 b'\x30\x31\x41'
这个函数会把每个字节统一转换成\x开头的两位十六进制转义字符串,最终组合成b'\xXX\xXX'的格式,打印出来就是单个反斜杠的效果。
内容的提问来源于stack exchange,提问作者Максим Крайнов
相关产品推荐
相关产品推荐

