首页 | 麦客学吧 | 视频教程 | FLASH小游戏 | 素材下载 | 常用工具
您当前的位置:首页 > 程序开发 > C# > 正文

用C#实现由15位身份证号升级到18位的算法

出处:麦客学吧 [2007-6-28 17:30:01] 作者:佚名 点击数:197

讨论交流:http://x8.maicoo.com/team/8677.html

1using System;
 2using System.Collections;
 3
 4public class MyClass
 5{
 6    public static void Main()
 7    {
 8        Console.WriteLine(per15To18("429005811009091"));
 9        RL();
10    }
11   
12    public static string per15To18(string perIDSrc)
13  {
14   int iS = 0;
15
16   //加权因子常数
17   int[] iW=new int[]{7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
18   //校验码常数
19   string LastCode="10X98765432";
20   //新身份证号
21   string perIDNew;
22
23   perIDNew=perIDSrc.Substring(0,6);
24   //填在第6位及第7位上填上‘1’,‘9’两个数字
25   perIDNew += "19";
26
27   perIDNew += perIDSrc.Substring(6,9);
28
29   //进行加权求和
30   for( int i=0; i<17; i++)
31   {
32    iS += int.Parse(perIDNew.Substring(i,1)) * iW[i];
33   }
34    
35   //取模运算,得到模值
36   int iY = iS%11;
37   //从LastCode中取得以模为索引号的值,加到身份证的最后一位,即为新身份证号。
38   perIDNew += LastCode.Substring(iY,1);
39
40   return perIDNew;
41  }
42
43
44
45   
46    Helper methods#region Helper methods
47
48    private static void WL(object text, params object[] args)
49    {
50        Console.WriteLine(text.ToString(), args);   
51    }
52   
53    private static void RL()
54    {
55        Console.ReadLine();   
56    }
57   
58    private static void Break()
59    {
60        System.Diagnostics.Debugger.Break();
61    }
62
63    #endregion
64}
http://www.cnblogs.com/goody9807/archive/2006/11/13/559378.html

【责任编辑: lanier

素材中心
麦客酷站赏析频道

精彩图文推荐

关于本站 - 联系站长 - 广告服务 - 合作伙伴 - 网站地图 - 版权声明 - 报告错误 - 收藏本站 | Http://www.MaiCoo.com

Copyright © 2005 - 2008 MaiCoo.com All Rights Reserved

违法和不良信息举报中心 本站服务器空间和带宽由雷克斯网络提供赞助
浙ICP备06017818号