JAVA code128校验位码计算

code128校验位码计算方式:
1,從右到左,從倒數第二位4的偶數位相加
2,將第一步結果乘以3
3,從右到左,由倒數第三位0的奇數位相加
4,第二步結果加上第三步結果
5,用"大於"或"等於" 108(D的結果)且為10的最小整數倍的數減去108(D的結果)
6,校驗碼乘以1

代码

 public static Integer getCheckSum(String code) {
        if (code == null || code.trim().length() < 3) {
            return null;
        }
        String sortStr = new StringBuffer(code).reverse().toString();
        int evenNumber = 0;
        int oddNumber = 0;
        for (int i = 1; i <= sortStr.length(); i++) {
            if (i % 2 == 0) {
                //1,從右到左,從倒數第二位4的偶數位相加
                char c = sortStr.charAt(i - 1);
                String str = String.valueOf(c);
                evenNumber = evenNumber + Integer.parseInt(str);
            } else if (i >= 3 && i % 2 != 0) {
                //3,從右到左,由倒數第三位0的奇數位相加
                char c = sortStr.charAt(i - 1);
                String str = String.valueOf(c);
                oddNumber = oddNumber + Integer.parseInt(str);
            }
        }
        //2,將第一步結果乘以3
        evenNumber = evenNumber * 3;
        //4,第二步結果加上第三步結果
        int sumNumber = evenNumber + oddNumber;
        //5,用"大於"或"等於" 108(D的結果)且為10的最小整數倍的數減去108(D的結果)
        //6,校驗碼乘以1
//        i = i * 1;
        return 10 - (sumNumber % 10);
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容