Code128码于1981年推出,是一种长度可变、连续性的字母数字条码。与其他一维条码比较起来,相对较为复杂,支持的字元也相对较多,又有不同的编码方式可供交互运用,因此其应用弹性也较大。
Code128特性:

1、具有A、B、C三种不同的编码类型,可提供标准ASCII中128个字元的编码使用;

2、允许双向扫描;

3、可自行决定是否加上检验位;

4、条码长度可调,但包括开始位和结束位在内,不可超过232个字元;

5、同一个128码,可以由A、B、C三种不同编码规则互换,既可扩大字元选择的范围,也可缩短编码的长度。

Code128各编码方式的编码范围:

1、Code128A:标准数字和字母,控制符,特殊字符;

2、Code128B:标准数字和字母,小写字母,特殊字符;

3、Code128C/EAN128:[00]-[99]的数字对集合,共100个,即只能表示偶数位长度的数字。

Code128编码规则:开始位 + [FNC1(为EAN128码时加)] + 数据位 + 检验位 + 结束位

Code128检验位计算:(开始位对应的ID值 + 每位数据在整个数据中的位置×每位数据对应的ID值)% 103

Code128编码表:

Code128编码示例:以 95270078 为例

Code128A, 开始位对应的ID为103,第1位数据9对应的ID为25,第2位数据5对应的ID为21,依此类推,可以计算检验位 = (103 + 125 + 221 + 318 + 423 + 516 + 616 + 723 + 824) % 103 = 21,即检验位的ID为21。

对照编码表,95270078 编码表示为:开始位StartA(bbsbssssbss)+ 数据位[9(bbbssbsbbss)+ 5(bbsbbbssbss)+ 2(bbssbbbssbs)+ 7(bbbsbbsbbbs)+ 0(bssbbbsbbss)+ 0(bssbbbsbbss)+ 7(bbbsbbsbbbs)+ 8(bbbsbssbbss)]+ 检验位21(bbsbbbssbss)+ 结束位Stop(bbsssbbbsbsbb), 即:bbsbssssbssbbbssbsbbssbbsbbbssbssbbssbbbssbsbbbsbbsbbbsbssbbbsbbssbssbbbsbbssbbbsbbsbbbsbbbsbssbbssbbsbbbssbssbbsssbbbsbsbb。 若要打印,只需将b用黑色线标出,s用白色线标出,一个简单的条形码生成程序就完成了!

128B 与128A类似,128C只能对长度为偶数的数字串编码,每两个数字为一位,所以输出的信息压缩了一半,打印的条形码因此也就较短。接上例,第1位数据 95对应ID为95,第2位数据27对应ID为27,第3位数据00对应ID为0,第4位数据78对应ID为78,所以检验位 = (105 + 195 + 227 + 30 + 478) % 103 = 51

EAN128与Code128C相同,只是在开始位后加多一个控制位FNC1(ID为102),同时将FNC1做为第1位数据加入到检验位的计算。

文档更新时间: 2021-07-01 07:31   作者:月影鹏鹏