总结:
15位身份证号码,第15位为性别校验位,奇数为男,偶数为女
18位身份证号码,第17位为性别校验位,奇数为男,偶数为女
依据:
目前我国的身份中号码只有两种样式:15位和18位,其中
15位身份证号码各位的含义:
1-2位省、自治区、直辖市代码;
3-4位地级市、盟、自治州代码;
5-6位县、县级市、区代码;
7-12位出生年月日,比如670401代表1967年4月1日,与18位的第一个区别;
13-15位为顺序号,其中15位奇数为男,偶数为女;
18位身份证号码各位的含义:
前1、2位数字表示:所在省份的代码;
第3、4位数字表示:所在城市的代码;
第5、6位数字表示:所在区县的代码;
第7~14位数字表示:出生年、月、日;
第15、16位数字表示:所在地的派出所的代码;
第17位数字表示性别:奇数表示男性,偶数表示女性;
第18位数字是校检码:也有的说是个人信息码,一般是随计算机的随机产生, 用来检验身份证的正确性。校检码可以是0~9的数字,有时也用X
上代码:
+ (NSInteger)genderOfIDNumber:(NSString *)IDNumber
{
// 记录校验结果:0未知,1男,2女
NSInteger result = 0;
NSString *fontNumer = nil;
if (IDNumber.length == 15)
{ // 15位身份证号码:第15位代表性别,奇数为男,偶数为女。
fontNumer = [IDNumber substringWithRange:NSMakeRange(14, 1)];
}else if (IDNumber.length == 18)
{ // 18位身份证号码:第17位代表性别,奇数为男,偶数为女。
fontNumer = [IDNumber substringWithRange:NSMakeRange(16, 1)];
}else
{ // 不是15位也不是18位,则不是正常的身份证号码,直接返回
return result;
}
NSInteger genderNumber = [fontNumer integerValue];
if(genderNumber % 2 == 1)
result = 1;
else if (genderNumber % 2 == 0)
result = 2;
return result;
}
网友评论