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
相关产品推荐
相关产品推荐

