美文网首页iOS Developer
iOS开发:身份证号码性别判断

iOS开发:身份证号码性别判断

作者: 哇哦萌芽技术团队 | 来源:发表于2016-11-23 16:14 被阅读0次

    总结:
    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;
    }
    
    

    相关文章

      网友评论

        本文标题:iOS开发:身份证号码性别判断

        本文链接:https://www.haomeiwen.com/subject/nsjvpttx.html