IDCode checksum algorithm

Operating Address:

https://c.runoob.com/compile/10

Algorithm source code

public class HelloWorld {
    public static void main(String []args) {
        String code = "MA.156.M0.123456.N1234560.L190726A.S1907260001.E200725.C1";
        String[] codeList = code.split("\\.");
        String code1 = "";
        String code2 = "";
        for (int i = 0; i < codeList.length; i++) {
            if (i <= 4) {
                code1 = code1 + "." + codeList[i];
            } else if(I = codeList.length -. 1! ) { 
                code2 = code2 + + "." CodeList [I]; 
            } 
        } 
        // remove the last parity bit and a front point 
        code1 = code1.substring (1, code1.length ( ) -. 1 ); 
        System.out.println ( "code:" + code); 
        System.out.println ( "/ ************************************************************ ******** / " ); 
        System.out.println ( " of code1: "+ of code1); 
        String code1Num = letter2num (of code1) +" the Y " ; 
        System.out.println ( " code1Num: "+ code1Num );
        code1Num = evenNum (code1Num);
        System.out.println("evenNum(code1Num):" + code1Num); 
        int result1 = sumNum(code1Num);
        System.out.println("result1:" + result1);
        int y = 10 - (result1 % 10);
        System.out.println("y:" + y);
        code1 = code1 + y;
        System.out.println(code1);

       
        System.out.println("/*******************************/");
        System.out.println("code2:" + code2);
        String code2Num = letter2num(code2) + "Z";
        System.out.println("code2Num:" + code2Num);
        code2Num = evenNum(code2Num);
        System.out.println("evenNum(code2Num):" +code2Num);
        int result2 = sumNum(code2Num);
        System.out.println("result2:" + result2);
        int z = 10 - (result2 % 10);
        System.out.println("z:" + z);
        System.out.println("/*******************************/");
        code2 = code2 + ".C" + z;
        System.out.println("code2:" + code2);
        System.out.println("LAST:" + code1 + code2);

    }

    private static String letter2num(String letterStr) {
        String num = "";
        for (int i = 0; i < letterStr.length(); i++) {
            for (letter e : letter.values()) {
                if (String.valueOf(letterStr.charAt(i)).equals(e.getLetter())) {
                    num += e.getNum();
                }
            }
        }
        return num;
    }

    private static String evenNum(String numStr) {
        String result = "";
        numStr = new StringBuffer(numStr).reverse().toString();
        for (int i = 1; i <= numStr.length(); i++) {
            char num = numStr.charAt(i - 1);
            if (i % 2 == 0) {
                int numTemp = Integer.valueOf(String.valueOf(num));
                numTemp = numTemp * 2;
                if (numTemp > 9) {
                    String numS = String.valueOf(numTemp);
                    numTemp = Integer.valueOf(String.valueOf(numS.charAt(0))) + Integer.valueOf(String.valueOf(numS.charAt(1)));
                }
                result = result + numTemp;
            } else {
                result = result + num;
            }
        }
        return result;
    }

    private static int sumNum(String result) {
        result = result.substring(1, result.length());
        int c = 0;
        int count = result.length();
        int[] a = new int[count];
        for (int i = 0; i < result.length(); i++) {
            a[i] = Integer.valueOf(String.valueOf(result.charAt(i)));
        }

        for (int i = 0; i < a.length; i++) {
            c += a[i];
        }
        return c;
    }

    private enum letter {
        To1("A", 10),
        To2("B", 11),
        To3("C", 12),
        To4("D", 13),
        To5("E", 14),
        To6("F", 15),
        To7("G", 16),
        To8("H", 17),
        To9("I", 18),
        To10("J", 19),
        To11("K", 20),
        To12("L", 21),
        To13("M", 22),
        To14("N", 23),
        To15("O", 24),
        To16("P", 25),
        To17("Q", 26),
        To18("R", 27),
        To19("S", 28),
        To20("T", 29),
        To21("U", 30),
        To22("V", 31),
        To23("W", 32),
        To24("X", 33),
        To25("Y", 34),
        To26("Z", 35),
        To27("a", 36),
        To28("b", 37),
        To29("c", 38),
        To30("d", 39),
        To31("e", 40),
        To32("f", 41),
        To33("g", 42),
        To34("h", 45),
        To35("i", 46),
        To36("j", 47),
        To37("k", 48),
        To38("l", 49),
        To39("m", 50),
        To40("n", 51),
        To41("o", 52),
        To42("p", 53),
        To43("q", 54),
        To44("r", 55),
        To45("s", 56),
        To46("t", 57),
        To47("u", 58),
        To48("v", 59),
        To49("w", 60),
        To50("x", 61),
        To51("y", 62),
        To52("z", 63),
        To53("0", 0),
        To54("1", 1),
        To55("2", 2),
        To56("3", 3),
        To57("4", 4),
        To58("5", 5),
        To59("6", 6),
        To60("7", 7),
        To61("8", 8),
        To63("-", 64),
        To64(".", 65),
        To65("@", 66),
        To66("$", 67),
        To67(",", 68),
        To68("*", 69),
        To69("+", 70),
        To70("%", 71),
        To71("/", 72),
        To72("#", 73),
        To73("!", 74),
        To74("^", 75),
        To75("~", 76);
        private String letter;
        private Integer num;

        letter(String letter, Integer num) {
            this.letter = letter;
            this.num = num;
        }

        public String getLetter() {
            return letter;
        }

        public Integer getNum() {
            return num;
        }
    }
}

Export

code:MA.156.M0.123456.N1234560.L190726A.S1907260001.E200725.C1
/*******************************/
code1:MA.156.M0.123456.N123456
code1Num:22106515665220651234566523123456Y
evenNum(code1Num):Y35834162163583411602453611160142
result1:106
y:4
MA.156.M0.123456.N1234564
/*******************************/
code2:.L190726A.S1907260001.E200725
code2Num:6521107261065281072600016514200725Z
evenNum(code2Num):Z1250028116200032502845302647012216
result2:91
z:9
/*******************************/
code2:.L190726A.S1907260001.E200725.C9
LAST:MA.156.M0.123456.N1234564.L190726A.S1907260001.E200725.C9

 

Guess you like

Origin www.cnblogs.com/txw1958/p/12029104.html