-1

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

有时,它会产生 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

4

1 回答 1

2

这条线的问题:

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

当已经是 10 的倍数时,这将产生sum10。基本上你只是想四舍五入。这是一个简单的方法:

CheckSumNumber = (((sum + 9) / 10) * 10) - sum;
于 2010-06-26T06:42:13.560 回答