CODE128不同编码方式之间的混合编码

众所周知,CODE128码广泛用于企业内部、物流系统之中,然而,对于该类条码,却又有着不同种类的细分(主要分为以下四种:code128A,code128B,code128C,ean128)。

  

  主要区别如下:

    code128A:标准数字和大写字母,控制符,特殊字符

    code128B:标准数字和大写字母,小写字母,特殊字符

    code128C / ean128:[00]-[99]的数字对集合,共100个

  其中,code128C / ean128 因其内部算法从而决定了只能对偶数位的数字进行编码(两者区别:ean128在起始位后多了一个标识位,并参与最终校验位的计算)

 

所以对于编码方式的选择,便因使用场景不同而不同。

对于字符串,尤其是纯数字的编码,如果是偶数位,毫无疑问,选择 code128C / ean128 便是一种最优的编码方式,但若为奇数位,那么该如何选择呢?

由于code128A与cede128B均为按位编码,所以选择这两种自然无可厚非,可也正是因为是按位编码,整体长度便成了该码制的一大短板。幸运的是,在code128码制下,是支持内部码制混编的,也就是说,我们可以采取先使用ean128,再使用code128A的形式,将该数字串的编码长度缩为最短。那么,该如何进行混合操作呢?

 

下面我们以123456789为例,进行简单解释:

对该字符串,我们可以将其拆分为:12,34,56,78,9  这五个部分,对于前四个,以正常的ean128对其进行编码

   

  起始位 标识符 字符1 字符2 字符3 字符4 特殊控制码 字符5 校验位 终止位
 编码StartCFNC112345678StartA9 STOP
 ID1051021234
56
78101
 25 76106

 

 

 

 

经查询编码对照表可知各个编码的ID如下(红色表示)

计算校验位(蓝色表示):(105*1+102*2+12*3+34*4+56*5+78*6+101*7+25*8)%103=76

  注:须将特殊控制码一并计入计算序列,方可得到正确的校验位!

现在所有编码元素的id均已获取,便可根据ID从编码对照表中获取对应的BandCode值,从而生成正确可识别的条码。

其实,对于混合编码,最重要的一点便是对于校验位的计算,这里提到的计算方法,是经过实际测试通过并运行的。

 

 

铸剑团队签名:

【总监】十二春秋之,3483099@qq.com

【Master】戈稻不苍,han169@126.com

【Java开发】雨鸶,343691194@qq.com;思齐骏惠,qiangzhang1227@163.com;小王子,545106057@qq.com;巡山小钻风,840260821@qq.com

【VS开发】豆点,2268800211@qq.com

【系统测试】土镜问道,847071279@qq.com;尘子与自由,695187655@qq.com

【大数据】沙漠绿洲,caozhipan@126.com;张三省,570417591@qq.com

【网络】夜孤星,11297761@qq.com

【系统运营】三石头,261453882@qq.com;平凡怪咖,591169003@qq.com

【容灾备份】秋天的雨,18568921@qq.com

【安全】保密,你懂的。

原创作者:豆点

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

转载于:https://www.cnblogs.com/sunny7727277/p/HybridCoding_Code128.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值