Python读取十六进制文本转bytes,如何消除多余反斜杠?
Python Bytes对象转换问题解决
你的代码存在几个关键问题,导致输出不符合预期:
1. 变量名拼写错误
代码里word_count = len(word)中的word是未定义变量,应该改为len(words);同时byte_to_txr和byte_to_send拼写不一致,属于低级语法错误。
2. 核心逻辑错误:错误处理十六进制转字节
你通过拼接r'\x'和字符串的方式生成目标字符串,再转成bytes对象,这本质是把\x当成普通文本字符处理了——r'\x'是原始字符串,其中的反斜杠会被当作普通字符存储,转成bytes时会被编码为\x5c(反斜杠的UTF-8编码),x会被编码为\x78,最终输出自然会出现\\x(转义后的反斜杠)。
另外readlines()会保留每行末尾的换行符(\n),如果不处理,会导致换行符也被当成内容拼接进去,影响转换结果。
正确的实现方式
Python内置了bytes.fromhex()方法,可以直接将十六进制字符串转换为对应的bytes对象,这是最简洁可靠的方式:
file_path = "你的文件路径.txt" with open(file_path, 'r') as file: # 读取每行并去掉换行符、空白字符 hex_lines = [line.strip() for line in file.readlines()] for hex_str in hex_lines: # 直接将十六进制字符串转为bytes byte_data = bytes.fromhex(hex_str) # 打印bytes对象(默认会显示b'\x81\xc5\x04\x00'格式) print(byte_data) # 如果需要去掉开头的b'',可以用repr()处理后切片 print(repr(byte_data)[2:-1])
运行结果
b'\x81\xc5\x04\x00' \x81\xc5\x04\x00
补充说明
bytes.fromhex()会自动将每两个十六进制字符解析为一个字节,无需手动拼接\x转义符。strip()用于去除每行的换行符、空格等无关字符,避免转换时出现错误。
内容的提问来源于stack exchange,提问作者philipcj
相关产品推荐
相关产品推荐

