18位身份证末尾验证码计算函数


本⽂档详细给出了 18位⾝份证的校验位的计算函数,仅供参考! /* *num,前 17位 *返回值, -1:位数错误, 0~10:校验码( 10即为 X) */ int GetChecksum(char* num) { int res = -1; int Checksum = 0;//校验位 int mod = 0;//mod位 int len = strlen(num); if (len != 17) { //⾝份证 17位判断 return res; } //ISO 7064:1983.MOD 11-2校验码计算 for (int i = 0; i < 17; i++) { char c[2] = {0}; strncpy(c,&num[i],1); int c1 = atoi(c); int temp = (1<<(17 - i))%11; mod += c1 * temp; } Checksum = mod % 11; //查表 if (Checksum < 2) { res = !Checksum; } else { res = 12 - Checksum; } return res;

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 2 金币 [ 分享pdf获得金币 ] 1 人已下载

下载pdf

pdf贡献者

bearpeng

贡献于2014-03-01

下载需要 2 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf