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

Python3.10读取exe输出无格式二进制串到txt触发解码报错如何解决

报错原因
  • 你的实现逻辑和需求不匹配:你需要将二进制字节转换为0/1组成的二进制位文本,而非将字节按UTF-8解码为自然语言字符
  • Windows可执行文件属于二进制文件,大量字节不符合UTF-8编码规范,直接解码必然抛出UnicodeDecodeError错误
可直接运行的修复代码
with open("input.exe", "rb") as f:
    # 一次性读取全部二进制字节
    all_bytes = f.read()

# 每个字节转换为固定8位的0/1字符串,补全前导零后拼接
binary_text = ''.join(format(b, '08b') for b in all_bytes)

with open("output.txt", "w", encoding="ascii") as f:
    f.write(binary_text)
代码说明
  • format(b, '08b')会将单个字节的整数值(0~255)转换为长度固定为8的二进制字符串,不足8位时自动在前面补0,确保每个字节对应恰好8个0/1字符
  • 输出内容仅包含连续的0和1,无空格、换行、偏移量、ASCII表示等额外内容,完全匹配需求
  • 相比逐字节读取拼接的写法,批量处理的执行效率更高,适合处理大体积exe文件

如果需要处理体积超过内存容量的超大exe,可以使用逐块处理的版本,避免内存占用过高:

CHUNK_SIZE = 1024 * 1024  # 每次读取1MB,可自行调整
with open("input.exe", "rb") as in_f, open("output.txt", "w", encoding="ascii") as out_f:
    while chunk := in_f.read(CHUNK_SIZE):
        chunk_bit_str = ''.join(format(b, '08b') for b in chunk)
        out_f.write(chunk_bit_str)

内容的提问来源于stack exchange,提问作者plagiarism

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:36:02