如何计算条形码Code128校验码
Code128也是需要校验码的,只不过Code128的校验码不会显示出来,只是在生成条形码时,由条形码生成工具写到条形码中,扫码时由扫码设备解析读取出来,自动完成验证。
正因为看不见也无须人工干涉,所以Code128的校验码容易被忽略。
上图条形码编辑工具来源于条形码生成器,无须任何安装,点击即可在线使用。
然而,如果希望深入了解条形码原理,对于常用的码制Code128的校验码的计算方式,是有必要学习了解的。以下结合简单的例子,为您讲解Code128校验码的生成过程。
Code128校验码的计算过程
首先,将所有条形码的字符,按照生成的字符集,查询Code128字符集的对照表,找到字符对应的字符值,也即是字符在表中最左侧的序号。
然后,将每一个字符值乘以权数,再将所有乘积相加,对求得的和,除以103,取余数,这个余数是字符值(即字符集的序号),也即是校验值。
需要注意的是,上面提及的权数,开始符的权数是1,后续的字符的权数再由1开始逐个递增加1,即第1个字符是开始符权数是1,第2个字符也是1,第3个字符是2,第4个字符是3,...,依此递增。
还需要注意,校验码是计算的结果,不参与运算,还有终止符也是不参与以上所有的运算。
如果以上的内容没有看懂,没有关系,以下多零为您举例说明,会更加直观容易理解。
举个例子
例如,使用Code128的字符集A,生成内容为“ABC”的条形码,计算其校验码的过程如下:
- 从字符集A对照表中,分别找到开始符、“A”、“B”、“C”四个字符值;
其字符值分别为103、33、34、35。
- 将字符值乘以权数,再相加求和;
开始符的权数是1,第2个字符“A”的权数也是1,第3个字符“B”的权数递增是2,第4个字符“C”的权数递增是3。
结果字符值计算过程是:(103×1)+(33×1)+(34×2)+(35×3)=309 。
- 将上一步的计算结果,除以103,取余数;
即是309%103=0 。计算结果0即是字符值(字符集中的序号),也即是校验码。
最终这个示例的完整的条形码字符值是103、33、34、35、0 ,当然,结尾处还需要加上终止符,但由于终止符是没有字符值的,所以没有加上。
Code128条码字符集哪里获取?
Code128校验码的计算过程中,查询Code128字符集表是关键步骤之一,那么,如何获取到Code128字符集对照表?
网络搜索即可找到很多Code128字符集的相关信息。如果希望获取正式的官方文档,可以查找国际标准【ISO/IEC 15417:2007】、以及国内标准【GB/T 18347-2001】和【GB/T 15425-2014】的文档,里面都有完整的Code128字符集对照表。
----------------------------
参考资料:
GB/T 18347-2001:https://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=0BCD55B8A55B2922C0FFD40FEE3CDD79
GB/T 15425-2014:https://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=AF88702439737AB50E248CC1A6B706C2
---------------
了解更多: 如何计算条形码EAN13的校验码