MOD 10,11演算法(GB/T 17710-1999 資料處理 校驗碼系統 )的Java實現
阿新 • • 發佈:2019-02-09
public static int GB17710_1011(String str) { char[] strTmp = str.toCharArray(); int[] aArray, pArray, sArray; int iLen, i, j; aArray = new int[17]; pArray = new int[17]; sArray = new int[17]; iLen = strTmp.length; j = iLen - 1; aArray[0] = 0; for (i = 2; i <= iLen; i++) { aArray[i] = strTmp[j]; j--; } j = 0; for (i = 16; i > 1; i--) { j++; if (j == 1) { pArray[j] = 10; } else { pArray[j] = (sArray[j - 1] % 10) * 2; } if (pArray[j] == 0) { pArray[j] = 10; pArray[j] = pArray[j] * 2; } sArray[j] = pArray[j] % 11; if (sArray[j] == 0) { sArray[j] = 10; } sArray[j] = sArray[j] + aArray[i]; } iLen++; pArray[iLen] = (sArray[j] % 10) * 2; aArray[1] = 10 - ((pArray[iLen] - 1) % 10); if (aArray[1] >= 10) { aArray[1] = 0; } return aArray[1]; }