用于计算数字列表的校验位的算法是什么? 列表的长度在8到12位之间。
答案 0 :(得分:7)
Luhn algorithm对于信用卡行业来说已经足够了......
答案 1 :(得分:5)
RichieHindle指出,Luhn算法非常好。它将检测(但不正确)任何一个错误或转置(除了转换0和9)。
你也可以考虑ISBN check digits的算法,虽然对于旧式ISBN,校验位有时是“X”,如果你使用整数字段,这对你来说可能是一个问题。新式ISBN似乎没有这个问题。维基百科没有深入研究系统的理论属性,但我记得很久以前我的编码理论课程中研究过ISBN编号,所以我认为它们非常好: - )
答案 2 :(得分:3)
答案 3 :(得分:2)
Verhoeff,没有更好的IMO。
答案 4 :(得分:2)
我知道它有点晚了(根据发布日期),但我上周第一次需要支票号算法。
所以我检查了更多的算法和恕我直言,最好的解决方案(仅限数字)似乎是Damm algorithm。 它很容易实现并检测大多数测试错误(所有单个数字错误和所有转置错误,几乎所有跳转转换错误)。
对我来说只有一个问题,因为我需要不仅从数字而且从字符计算校验位。有多种方法可以将字符转换为数字,但错误检测总是低于仅使用数字。
对于这些情况,您可以使用ISO_6346规范。