我刚刚学习了.rev
WinRAR 中的文件——例如,如果你有一个 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。
因此,恢复号码可让您找到任何一个缺失的号码。