如果使用Damm algorithm生成校验位,是否有方法在代码未验证时尝试更正错误?
最佳答案
不,该算法只能用来检测错误,不能纠正错误。
这可以用一个简单的例子来说明假设您收到一个包含数字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
位来得到正确的校验和。