如果使用DAMM算法生成检查数字,是否有一种方法可以尝试纠正错误,如果代码未验证?
nope,该算法只能用于检测错误,而不能纠正错误。
可以用一个简单的示例来证明这一点。假设您收到一个包含数字9857
的数字。当您在该数字上运行算法时,结果为6。因此,其中一个数字已更改。但是哪一个呢?
通过蛮力搜索,您可以确定原始数字可以是以下任何一个:
original resulting
number error that occurred number
1857 the first digit got changed from 1 to 9 9857
9157 the second digit got changed from 1 to 8 9857
9827 the third digit got changed from 2 to 5 9857
9850 the fourth digit got changed from 0 to 7 9857
因此,一个包含错误的数字并不能识别原始数字。
通常,可以通过更改任何一个数字来获得正确的校验和。也就是说,如果您收到带有N
数字的数字,并且校验和不是0,则可以更改N
数字中的任何一个以获得正确的校验和。