hello world!!!!!

写下自己的一些心得,写下自己问题的方式,写下程序之路的艰辛,希望能够有朝一日成为大牛。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

组织机构代码生成算法(c#实现)

Posted on 2012-04-12 17:19  陈力  阅读(2944)  评论(0编辑  收藏  举报

 

 

1.全国组织机构代码由八位数字(或大写拉丁字母)本体代码和一位数字(或大写拉丁字母)校验码组成。

  本体代码采用系列(即分区段)顺序编码方法。

  校验码按照以下公式计算:

  C9=11-MOD(∑Ci(i=1→8)×Wi,11)

  式中: MOD——代表求余函数;

  i——代表代码字符从左至右位置序号;

  Ci——代表第i位上的代码字符的值(具体代码字符见附表);

  C9——代表校验码;

  Wi——代表第i位上的加权因子,其数值见下表:

  当C9的值为10时,校验码应用大写的拉丁字母X表示;当C9的值为11时校验码用0表示。

 

其中生成第九位的

 

    string C9 = "";
            //  C9=11-MOD(∑Ci(i=1→8)×Wi,11) 

            
// Dim w(8) As Integer 'W权位   w(1) = 3   w(2) = 7   w(3) = 9   w(4) = 10   w(5) = 5   w(6) = 8   w(7) = 4   w(8) = 2 


            int[] right = { 379105842 };

            string num = nbe1.ToUpper();

            int total = 0;

            int A = AscUtility.Asc("A");
            int Z = AscUtility.Asc("Z");
            for (int i = 0; i < 8; i++)
            {
                string c = num.Substring(i, 1);//(Mid(str_in, i, 1))  
                int z = 0;


                int tempC = AscUtility.Asc(c);
                if (tempC >= A & tempC <= Z)
                {
                    z = (tempC - 55) * right[i];
                }
                else if (tempC >= 48 & tempC <= 57)
                {
                    int value = tempC - 48;

                    z = Convert.ToInt32(value) * right[i];
                }
                else
                {

                }
                total = total + z;

            }
            int jav = 11 - (total % 11);

            if (jav == 10)
            {
                C9 = "X";
            }
            else if (jav == 11)
            {
                C9 = "0";
            }
            else
            {
                C9 = jav.ToString();
                //Mid(Str(jav), 2, 1);
            }// '删除文