一、前言
初次写博言,在做项目的过程中,碰到些问题网上资料又不多的多于大家分享,希望对有需要的人有一定的帮助作用;
希望各位多支持!
二、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 }