各种条码的校验码算法(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、对结果进行再处理得到校验码。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)