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

王朝other·作者佚名  2008-05-30
窄屏简体版  字體: |||超大  

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航