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

基于三个损坏RAR文件的交集恢复完整文件可行性咨询

利用三个损坏的RAR文件拼接完整文件的方法

嘿,这个思路真的很聪明!三次下载的同文件损坏位置大概率不一样,确实可以通过提取三个文件里的完好部分拼接出完整的RAR包。不用diff/comm也完全能做到,给你两个实用的方案:

方案一:用简单的Python脚本自动修复(最推荐)

这个脚本会逐字节读取三个文件,对每个位置的字节进行"投票"——选出现次数最多的字节写入新文件。如果某个位置只有一个文件损坏,另外两个的字节一致,就会自动取正确的那个;即使两个文件损坏,只要第三个是好的,也能正确提取。

import os

# 替换成你的三个损坏RAR文件路径
file_paths = ["corrupt1.rar", "corrupt2.rar", "corrupt3.rar"]
output_path = "fixed.rar"

# 先检查三个文件大小是否一致(必须是同一源文件的损坏版)
file_sizes = [os.path.getsize(path) for path in file_paths]
if not all(size == file_sizes[0] for size in file_sizes):
    print("错误:所有文件必须大小完全一致!")
    exit()

with open(output_path, "wb") as output_file:
    # 同时打开三个输入文件
    with open(file_paths[0], "rb") as f1, open(file_paths[1], "rb") as f2, open(file_paths[2], "rb") as f3:
        processed_bytes = 0
        while True:
            # 每次读取一个字节
            b1 = f1.read(1)
            b2 = f2.read(1)
            b3 = f3.read(1)
            
            # 读到文件末尾就停止
            if not b1:
                break
            
            # 统计每个字节出现的次数
            byte_votes = {b1: 0, b2: 0, b3: 0}
            byte_votes[b1] += 1
            byte_votes[b2] += 1
            byte_votes[b3] += 1
            
            # 选择得票最多的字节写入新文件
            selected_byte = max(byte_votes, key=byte_votes.get)
            output_file.write(selected_byte)
            
            processed_bytes += 1
            # 每处理1MB打印一次进度
            if processed_bytes % 1048576 == 0:
                print(f"已处理 {processed_bytes // 1048576} MB...")

print(f"修复完成!请尝试解压生成的 {output_path}")

运行方法:

  1. 把三个损坏文件放在同一个文件夹里,命名成corrupt1.rar、corrupt2.rar、corrupt3.rar(或者修改脚本里的file_paths路径)
  2. 把上面的代码保存成fix_rar.py
  3. 在命令行里运行python fix_rar.py,等待处理完成

方案二:先试试RAR自带的修复功能

很多时候,单个损坏的RAR包其实可以用官方工具直接修复,先试试这个更简单的方法:

  • 如果你用的是Windows,找到WinRAR的安装目录(比如C:\Program Files\WinRAR),在命令行里进入该目录,然后运行:
    rar r corrupt1.rar
    
  • 如果你用的是Linux/macOS,安装rar工具后,直接在命令行运行上面的命令
  • 对另外两个损坏文件也重复这个操作,说不定其中一个能直接修复成功,省得折腾拼接的事

补充说明

如果脚本生成的文件还是解压失败,可能是某个位置三个文件都损坏了(这种概率很低,除非下载时的网络问题是固定损坏某个区域)。这时候可以用十六进制编辑器(比如HxD)打开三个文件,找到解压报错的位置,手动对比三个文件的字节,选择看起来更合理的那个(比如和周围字节的规律匹配)进行替换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:39:41