Singowoo

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

一、前言

     初次写博言,在做项目的过程中,碰到些问题网上资料又不多的多于大家分享,希望对有需要的人有一定的帮助作用;

希望各位多支持!

二、GB/T 17710,MOD 11,10校验公式  

 

 二、代码实现:  以下函数已运行验证通过

 1          public static int GetGB17710(string str)
 2          {
 3              string strTmp;
 4              int[] aArray, pArray, sArray;
 5              int iLen, i, j;
 6              aArray = new int[17];
 7              pArray = new int[17];
 8              sArray = new int[17];
 9 
10              strTmp = str;
11              iLen = strTmp.Length;
12              j = iLen - 1;
13              aArray[0] = 0;
14              for (i = 2; i <= iLen; i++)
15              {
16                  string sNum = strTmp[j].ToString();
17                  aArray[i] = Convert.ToInt32(sNum);
18                  j--;
19              }
20              j = 0;
21              for (i = 16; i > 1; i--)
22              {
23                  j++;
24                  if (j == 1)
25                  {
26                      pArray[j] = 10;
27                  }
28                  else
29                  {
30                      pArray[j] = (sArray[j - 1] % 10) * 2;
31                  }
32                  if (pArray[j] == 0)
33                  {
34                      pArray[j] = 10;
35                      pArray[j] = pArray[j] * 2;
36                  }
37                  sArray[j] = pArray[j] % 11;
38                  if (sArray[j] == 0)
39                  {
40                      sArray[j] = 10;
41                  }
42                  sArray[j] = sArray[j] + aArray[i];
43              }
44              iLen++;
45              pArray[iLen] = (sArray[j] % 10) * 2;
46              aArray[1] = 10 - ((pArray[iLen] - 1) % 10);
47              if (aArray[1] >= 10)
48              {
49                  aArray[1] = 0;
50              }
51              return aArray[1];
52          }

 

posted on 2013-05-10 17:14  Singowoo  阅读(2548)  评论(3)    收藏  举报