WinRAR 如何能用一个 .rev 文件修复任何卷?

WinRAR 如何能用一个 .rev 文件修复任何卷?

我刚刚学习了.revWinRAR 中的文件——例如,如果你有一个 10 部分的 RAR 卷,加上一个.rev(恢复)卷——该.rev卷将能够“修复”任何損壞的.rar巻。

这怎么可能?我不明白一个卷怎么能包含所有数据来修复任何/所有单独损坏的卷。

我猜想,也许可以这样,而不是像我想象的那样,将卷不“线性”地分解,其中每个 RAR 卷都包含整个卷中的不同单独文件;而是,.rev当将 RAR 卷视为一个连续的位和字节文件时,也许可以进行修复,并且也许需要使用某种 CRC 魔法(啊哈,“修复工作”)来修复损坏的字节。

但我只是不明白你怎么能有 9 个工作卷,其中一个损坏,却有一个可以修复的恢复卷任何其中一个卷。一个卷如何能够保存“所有”卷的数据?

答案1

让我们来看一个非常简单的例子。

您有四个卷和一个恢复卷,每个卷包含 1 位信息:

         ========================================================
Volumes: = Volume 1 = Volume 2 = Volume 3 = Volume 4 = Recovery =
         =----------=----------=----------=----------=----------=
   Bits: =    1     =    0     =    1     =    1     =     1    =
         ========================================================

恢复卷将包含这些位中的每一个的结果异或d 一起:

1 XOR 0 XOR 1 XOR 1 = 1

因此,我们的恢复卷包含单个位1


现在,假设卷 1 发生故障。

如果我们将剩余的卷 2、3 和 4 与故障卷的恢复位进行异或,我们将获得:

1 XOR 0 XOR 1 XOR 1 = 1
^

所以,这告诉我们体积 1 包含1,因为它是方程的结果。

让我们假装卷 2 死了,因此我们在等式中用恢复位替换它的值:

1 XOR 1 XOR 1 XOR 1 = 0
      ^

因此我们知道体积 2 包含0,因为它是方程的结果。

如果第 3 卷或第 4 卷失败,它们都会1按照这个等式产生。


因此,如果任何卷发生故障,则可以使用恢复卷根据剩余卷重建数据。这可能是您可以采用的最简单的错误更正形式。如果两个卷都发生故障,则无法恢复任何内容。

答案2

要想真正理解这一点,可以想象一下,如果恢复卷包含其他卷的总和。有了数字列表,缺少其中一个数字,以及它们的总和,您总是可以重建丢失的数字。

例如,考虑以下两位数:13、88、17、43。如果您知道有一个缺失的数字,并且所有数字之和的最后两位数是 81,那么您就可以找到缺失的数字。13 + 88 + 17 + 43 = 161。唯一可以添加到该数字以得出以 81 结尾的数字的两位数是 20。

假设你有 20 但缺少 43。13 + 88 + 17 + 20 = 138。唯一能与之相加以得出以 81 结尾的两位数的是 43。

因此,恢复号码可让您找到任何一个缺失的号码。

相关内容