如果您使用 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
位数字中的任何一位来获得正确的数字校验和。
关于algorithm - 基于 Damm 校验位的纠错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50008115/