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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 22:13:11