zoukankan      html  css  js  c++  java
  • 16Aspx.com-将15位身份证转换成18位

    //*********************************************************************************   
      //将15位身份证转换成18位时,首先把出生年扩展4位,就是在原来15位号码的第6为数字后   
      //增加一个19,然后在第17位数字后添加一位校验码,校验码是由前17位数字本体码加权求   
      //和公式,通过计算模,再通过模得到对应的校验码。   
      //计算校验码公式   
      //(1)17位数字本体码加权求和公式   
      //S=Sum(Ai*Wi),i=0,...,16,先对前17位数字的权求和   
      //Ai:表示第i位置上的身份证号码数字值   
      //Wi:表示第i位置上的加权因子   
      //Wi;7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2   
      //   
      //(2)计算模   
      //Y=mod(S,11)   
      //(3)通过模得到对应的校验码   
      //Y:0 1 2 3 4 5 6 7 8 9 10   
      //校验码:1 0 X 9 8 7 6 5 4 3 2   
      //*****************************************************************************   
      /// <summary>   
      /// 将15位的身份证号码转换成18位的身份证好码   
      /// </summary>   
      /// <param name="idCard">身份证号码</param>   
      /// <returns>返回18位身份证号码</returns>   
      public static string Convert15to18 (string idCard)   
      {   
       string code = idCard.Trim();//获得身份证号码   
       if (code.Length==15)//如果是15位则转换   
       {              
        char[] strJY ={ ''1'', ''0'', ''X'', ''9'', ''8'', ''7'', ''6'', ''5'', ''4'', ''3'', ''2'' };   
        int[] intJQ ={ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 };   
        string strTemp;   
        int intTemp = 0;   
        strTemp = code.Substring(0, 6) + "19" + code.Substring(6);   
        for (int i = 0; i <= strTemp.Length - 1; i++)   
        {   
         intTemp = intTemp + int.Parse(strTemp.Substring(i, 1)) * intJQ[i];   
        }   
        intTemp = intTemp % 11;   
        return strTemp + strJY[intTemp];   
       }   
       else  
       {   
        if (code.Length == 18)//如果是18位直接返回   
        {   
         return code;   
        }   
        return string.Empty;//如果即不是15位也不是18位则返回空   
       }         
      }   
      /// <summary>   
      /// 获得出身年月日   
      /// </summary>   
      /// <param name="idCard">身份证号码</param>   
      /// <returns>返回出身年月日</returns>   
      public static string GetBirth(string idCard)   
      {   
       string code = Convert15to18(idCard);//获得身份证号码   
       if (code != string.Empty)   
       {   
        string year = code.Substring(6, 4);//获得身份证号码里面的年   
        string month = code.Substring(10, 2);//获得身份证号码里面的月   
        string day = code.Substring(12, 2);//获得身份证号码里面的日   
        return year + "年" + month + "月" + day + "日";   
       }   
       else  
       {   
        return string.Empty;   
       }   
      }  
    

      

  • 相关阅读:
    kubernetes HA 脚本
    架构之数据库分表分库
    架构之高可用性(HA)集群(Keepalived)
    架构之Nginx(负载均衡/反向代理)
    架构之消息队列
    oracle数据迁移
    Oracle中关于清除数据和释放表空间
    疑难杂症:org.hibernate.MappingException: Unknown entity,annotation配置Entity类报错
    j疑难杂症:java.lang.VerifyError: class org.hibernate.type.WrappedMaterializedBlobType overrides final method getReturnedClass.()Ljava/lang/Class;
    疑难杂症:java.lang.AbstractMethodError: org.apache.xerces.dom.DocumentImpl.setXmlVersion(Ljava/lang/String;)V
  • 原文地址:https://www.cnblogs.com/amomzk/p/6961789.html
Copyright © 2011-2022 走看看