Luhn校验位

时间:2010-06-26 06:35:38

标签: c# asp.net luhn

我似乎无法弄清楚我的校验位代码有什么问题!

有时,它产生2个长度校验位值

实施例

1277531815000110 <-- check digit is double value??????
1277532495000110 <-- check digit is double value???????
1277534649000110 <-- check digit is double value???????
127753185300011 <-- good!
127753208500019 <-- good!

所有生成的数字都有效,可以在http://www.ee.unb.ca/cgi-bin/tervo/luhn.pl?N=127753224800013

进行检查

代码:http://dl.dropbox.com/u/678582/Email/GenerateAN.txt

1 个答案:

答案 0 :(得分:2)

这一行是问题所在:

CheckSumNumber = (((sum / 10) + 1) * 10) - sum;

sum已经是10的倍数时,这将生成10个。基本上你只是想要整理。这是一种简单的方法:

CheckSumNumber = (((sum + 9) / 10) * 10) - sum;