1. 程式人生 > >MOD 10,11演算法(GB/T 17710-1999 資料處理 校驗碼系統 )的Java實現

MOD 10,11演算法(GB/T 17710-1999 資料處理 校驗碼系統 )的Java實現

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];
    }