各种条码的校验码算法(EAN13,COD128,GTIN,UCC等)
校验码是由编码方案决定的,所以在代码中是否使用校验码和条码基本无关,但商品条码除外。今天给大家介绍几种校验码的计算方法。
一、商品条码:
商品条码中需要计算校验码的有:EAN-8(8位),EAN-13(13位),UCC(UPC-A)(12位),GTIN-14(ITF-14)(14位),GLN(13位),SSCC(18位)等。它们虽然位数不同,但计算校验码的方法完全相同。

1、包含校验码的所有数字从右向左编号,分别为1,2,3......18位;
2、从第2位开始,所有偶数位的权数为3,从第3位开始,所有奇数位的权数为1;
3、将对应位置的代码数字与权数相乘,参见下图(以SSCC的18位数字为例);
4、将所有乘积相加求和;(结果为109)
5、对第4步的和,求MOD 10运算(将和109除以10,取其余数9);
6、如果余数为0,则校验码为0,否则,用10减去余数的差即为校验码。(上例中校验码为1)
二、身份证校验码:
身份证校验码的计算比较复杂一些,参见下图:

1、自右向左为身份证号编号1-18;
2、确定各位数的权数,权数的计算公式为 2^(i-1) mod 11i—位数
如第3位的权数为2^(3-1)=2^2=4, 4除以11,商0余4,则权数为4。再如第5位的权数为2^(5-1)=2^4=16,16除以11,商1余5,则权数为5。
3、将权数与对应的身份证号数字相乘;
4、将所有乘积相加求和;(示例中的184)
5、将第4步的结果除以11,求余数(示例中的8)
6、从下表的R值中找到第5步的结果,对应的C值即为校验码。(示例中8对应的是4)

三、CODE-128码的校验符:
CODE-128码的校验符不会出现在数据中,也不用读出,这里仅介绍一下计算方法,实际使用中都是由条码软件自动生成的。由于CODE-128码可以表示字母、符号、控制符,而这些字符不能直接参与计算,所以要为每个字符分配一个码值。各个字符的码值可以参阅CODE-128码的标准文件。
1、首先为字符串编制条码;
2、从起始符开始,自左向右为每个条码字符编号;
3、为每一个字符分配权数,起始符和第一个字符的权数为1,以后依次增加;
4、每个字符的权数与码值相乘;
5、所有乘积求和;
6、第5步的结果除以103求余数;
7、码值等于余数的字符即为校验符。见下图:

EAN-128码的校验符的计算与此相同。
从以上三个例子可以看出,几乎所有的校验码的计算都是由以下步骤计算出来的:
1、为代码中的每一位数字规定序号;
2、给每一位代码分配一个权数;
3、权数与对应的代码相乘;
4、将所有的乘积相加;
5、对和进行MOD(求余数)运算;
6、对结果进行再处理得到校验码。
各种条码的校验码算法(EAN13,COD128,GTIN,UCC等)的更多相关文章
- 公民身份号码校验码算法(C#版)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- Android MD5校验码的生成与算法实现
在Java中,java.security.MessageDigest (rt.jar中)已经定义了 MD5 的计算,所以我们只需要简单地调用即可得到 MD5 的128 位整数.然后将此 128 位计 ...
- PHP CRC16 校验码的算法怎么使用
PHP CRC16 校验码的算法如何使用最近用到CRC16, 我现在就是要把 010301180001 算出CRC16的校验码,通过其他工具,可以得到 校验码是 05F1 最后完整的代码就是 0103 ...
- MOD 10,11算法(GB/T 17710-1999 数据处理 校验码系统 ),使用javascript实现
原文链接:http://chunniu.info/p/74.html GB/T 17710-1999 数据处理 校验码系统 ,便于使用,使用javascript做了一个页面 [php] var NUM ...
- 在线生成条形码的解决方案(39码、EAN-13)
感谢博主:转自:http://xoyozo.eyuyao.com/blog/barcode.html public partial class ReceivablesFormView : System ...
- 如何使用Delphi编写Modbus RTU CRC16的校验码
在工业控制中,Modbus RTU CRC16的校验码用的比较广泛,包括本人富士产品中,PC与伺服电机以及PC与VP系列的变频器的Modbus RTU通讯中都使用到了CRC16. 而对CRC1 ...
- Java获取字符串的CRC8校验码(由C程序的代码修改为了Java代码)
CRC8算法请百度,我也不懂,这里只是把自己运行成功的结构贴出来了.方法CRC8_Tab这里没有处理,因为我的程序中没有用到. package com.crc; public class CCRC8_ ...
- ISO 7064:1983.MOD11-2校验码计算法 : (身份证校验码-18位)
/* 假设某一17位数字是 17位数字 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 加权因子 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 计算17位 ...
- CLion注冊码算法逆向分析实录(纯研究)
声明 CLion程序版权为jetBrains全部.注冊码授权为jetBrains及其付费用户全部,本篇仅仅从兴趣出发,研究其注冊码生成算法. 不会释出不论什么完整的源码. 网上查了下.已有注冊机,所以 ...
随机推荐
- rocketmq架构设计
# 架构设计 1 技术架构 RocketMQ架构上主要分为四部分,如上图所示: Producer:消息发布的角色,支持分布式集群方式部署.Producer通过MQ的负载均衡模块选择相应的Broker集 ...
- hdu 4845 : 拯救大兵瑞恩 (bfs+状态压缩)
题目链接 #include<bits/stdc++.h> using namespace std; typedef long long LL; int n,m,p,s,k; ,,,-}; ...
- 图片没有.png或者jpg后缀能不能加载?
是可以的,如:http://mmbiz.qpic.cn/mmbiz_png/MW1VecOrnw6HUMvEUNUxibLVtbY2vHF8QkFyviaickh8pnsapQ8gOosdq13SBX ...
- Java后端进阶教程
https://www.cnblogs.com/caoleiCoding/p/6170555.html 传智播客Java Spring框架:https://www.bilibili.com/video ...
- [CSP-S模拟测试]:X国的军队(贪心)
题目描述 $X$国和$Y$国开战了! 作为$X$国的军事参谋,你了解到事态的严峻性.为了更好地应付敌人,你收集到了$Y$国城市中$n$个据点的信息,你打算攻破这$n$个据点! 每个据点$i$的信息由火 ...
- SQL element_at函数
库里有类似josn形式的字符串数据attr{"a":"123","b":"234"."c":&quo ...
- CSS-同一行的元素高度统一
一:flex 大法 步骤 设置外部容器 display: flex; 设置内部容器 align-items: stretch; 原理 https://developer.mozilla.org/zh- ...
- iOS 创建.xcworkspace文件
首先创建一个HelloWorld工程,步骤如下:iOS开发环境搭建 及 编写1个hello world 然后: 1. 终端run $ cd到.xcodeproj同级文件夹 2. 终端run $ pod ...
- python通过post提交数据的方法
python通过post提交数据的方法 本文实例讲述了python通过post提交数据的方法.分享给大家供大家参考. 具体实现方法如下: # -*- coding: cp936 -*- imp ...
- git查看某个文件的提交历史
1. git log --pretty=oneline 文件名 文件名是文件路径+文件名,输入完整 输入正确后,打印出版本号的列表 2. git show <git提交版本号> <文 ...