如果您使用Damm algorithm生成校验位,是否有一种方法可以在代码无效时尝试更正错误?
答案 0 :(得分:1)
不,该算法只能用于检测错误,而不能纠正错误。
这可以通过一个简单的例子来证明。我们假设您收到一个包含数字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
数字以获得正确的校验和。