这是一个对于10进制数的checksum算法。
公式如下
代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <tchar.h>
#include <windows.h>
class checkDigit{
public:
checkDigit(){};
~checkDigit(){};
static int getCheckDigit(int nData) {
if (nData < 0)
return 0;
bool bEven = true;
int sum = 0;
do {
int mod = nData % 10;
if (bEven) {
int modplus = mod * 2;
modplus = (modplus > 9) ?
(1 + modplus % 10) : modplus;
sum += modplus;
}
else {
sum += mod;
}
bEven = !bEven;
} while ((nData /= 10) != 0);
return (10 - sum % 10);
}
};
int _tmain(int argc, TCHAR* argv[]