卢恩校验位

发布于 2024-09-06 22:42:05 字数 672 浏览 0 评论 0原文

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

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

I cant seem to figure out what is wrong with my check digit code!

At times, it produces 2 length check digit values

Example

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

All generated numbers are valid, it can be checked at http://www.ee.unb.ca/cgi-bin/tervo/luhn.pl?N=127753224800013

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

诠释孤独 2024-09-13 22:42:05

这行代码就是问题所在:

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

sum 已经是 10 的倍数时,它将生成 10。基本上,您只是想向上舍入。这是一个简单的方法:

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

This line's the problem:

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

That will generate 10 when sum is already a multiple of 10. Basically you're just trying to round up. Here's an easy way of doing it:

CheckSumNumber = (((sum + 9) / 10) * 10) - sum;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文