将15位身份证转换成18位_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 将15位身份证转换成18位

将15位身份证转换成18位

 2013/11/22 16:31:12  eZplusy  博客园  我要评论(0)
  • 摘要:1//*********************************************************************************2//将15位身份证转换成18位时,首先把出生年扩展4位,就是在原来15位号码的第6为数字后3//增加一个19,然后在第17位数字后添加一位校验码,校验码是由前17位数字本体码加权求4//和公式,通过计算模,再通过模得到对应的校验码。5//计算校验码公式6//(1)17位数字本体码加权求和公式7//S=Sum(Ai*Wi)
  • 标签:
 1 //*********************************************************************************
 2   //将15位身份证转换成18位时,首先把出生年扩展4位,就是在原来15位号码的第6为数字后
 3   //增加一个19,然后在第17位数字后添加一位校验码,校验码是由前17位数字本体码加权求
 4   //和公式,通过计算模,再通过模得到对应的校验码。
 5   //计算校验码公式
 6   //(1)17位数字本体码加权求和公式
 7   //S=Sum(Ai*Wi),i=0,...,16,先对前17位数字的权求和
 8   //Ai:表示第i位置上的身份证号码数字值
 9   //Wi:表示第i位置上的加权因子
10   //Wi;7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
11   //
12   //(2)计算模
13   //Y=mod(S,11)
14   //(3)通过模得到对应的校验码
15   //Y:0 1 2 3 4 5 6 7 8 9 10
16   //校验码:1 0 X 9 8 7 6 5 4 3 2
17   //*****************************************************************************
18   /// <summary>
19   /// 将15位的身份证号码转换成18位的身份证好码
20   /// </summary>
21   /// <param name="idCard">身份证号码</param>
22   /// <returns>返回18位身份证号码</returns>
23   public static string Convert15to18 (string idCard)
24   {
25    string code = idCard.Trim();//获得身份证号码
26    if (code.Length==15)//如果是15位则转换
27    {           
28     char[] strJY ={ '1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2' };
29     int[] intJQ ={ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 };
30     string strTemp;
31     int intTemp = 0;
32     strTemp = code.Substring(0, 6) + "19" + code.Substring(6);
33     for (int i = 0; i <= strTemp.Length - 1; i++)
34     {
35      intTemp = intTemp + int.Parse(strTemp.Substring(i, 1)) * intJQ[i];
36     }
37     intTemp = intTemp % 11;
38     return strTemp + strJY[intTemp];
39    }
40    else
41    {
42     if (code.Length == 18)//如果是18位直接返回
43     {
44      return code;
45     }
46     return string.Empty;//如果即不是15位也不是18位则返回空
47    }      
48   }
49   /// <summary>
50   /// 获得出身年月日
51   /// </summary>
52   /// <param name="idCard">身份证号码</param>
53   /// <returns>返回出身年月日</returns>
54   public static string GetBirth(string idCard)
55   {
56    string code = Convert15to18(idCard);//获得身份证号码
57    if (code != string.Empty)
58    {
59     string year = code.Substring(6, 4);//获得身份证号码里面的年
60     string month = code.Substring(10, 2);//获得身份证号码里面的月
61     string day = code.Substring(12, 2);//获得身份证号码里面的日
62     return year + "" + month + "" + day + "";
63    }
64    else
65    {
66     return string.Empty;
67    }
68   }

 

  • 相关文章
发表评论
用户名: 匿名