您的当前位置:首页正文

条码code128编码规则

来源:九壹网
条码code128编码规则 Code128简介:

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编码表: ID Code128A SP ! \" # $ Code128B SP ! \" # $ Code128C 0 1 2 3 4 BandCode 编码值 0 1 2 3 4 212222 222122 222221 121223 121322 bbsbbssbbss bbssbbsbbss bbssbbssbbs bssbssbbsss bssbsssbbss 1 / 8

5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 131222 122213 122312 132212 221213 221312 231212 112232 122132 122231 113222 123122 123221 223211 221132 221231 213212 223112 312131 311222 321122 321221 bsssbssbbss bssbbssbsss bssbbsssbss bsssbbssbss bbssbssbsss bbssbsssbss bbsssbssbss bsbbssbbbss bssbbsbbbss bssbbssbbbs bsbbbssbbss bssbbbsbbss bssbbbssbbs bbssbbbssbs bbssbsbbbss bbssbssbbbs bbsbbbssbss bbssbbbsbss bbbsbbsbbbs bbbsbssbbss bbbssbsbbss bbbssbssbbs 2 / 8

27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 ; < = > ? @ A B C D E F G H I J K L M N O P ; < = > ? @ A B C D E F G H I J K L M N O P 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 312212 322112 322211 212123 212321 232121 111323 131123 131321 112313 132113 132311 211313 231113 231311 112133 112331 132131 113123 113321 133121 313121 bbbsbbssbss bbbssbbsbss bbbssbbssbs bbsbbsbbsss bbsbbsssbbs bbsssbbsbbs bsbsssbbsss bsssbsbbsss bsssbsssbbs bsbbsssbsss bsssbbsbsss bsssbbsssbs bbsbsssbsss bbsssbsbsss bbsssbsssbs bsbbsbbbsss bsbbsssbbbs bsssbbsbbbs bsbbbsbbsss bsbbbsssbbs bsssbbbsbbs bbbsbbbsbbs 3 / 8

49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 Q R S T U V W X Y Z [ \\ ] ^ _ NUL SOH STX ETX EOT ENQ ACK Q R S T U V W X Y Z [ \\ ] ^ _ ` a b c d e f 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 211331 231131 213113 213311 213131 311123 311321 331121 312113 312311 332111 314111 221411 431111 111224 111422 121124 121421 141122 141221 112214 112412 bbsbsssbbbs bbsssbsbbbs bbsbbbsbsss bbsbbbsssbs bbsbbbsbbbs bbbsbsbbsss bbbsbsssbbs bbbsssbsbbs bbbsbbsbsss bbbsbbsssbs bbbsssbbsbs bbbsbbbbsbs bbssbssssbs bbbbsssbsbs bsbssbbssss bsbssssbbss bssbsbbssss bssbssssbbs bssssbsbbss bssssbssbbs bsbbssbssss bsbbssssbss 4 / 8

71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 BEL BS HT LF VT FF CR SO SI DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS g h i j k I m n o p q r s t u v w x y z { | 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 122114 122411 142112 142211 241211 221114 413111 241112 134111 111242 121142 121241 114212 124112 124211 411212 421112 421211 212141 214121 412121 111143 bssbbsbssss bssbbssssbs bssssbbsbss bssssbbssbs bbssssbssbs bbssbsbssss bbbbsbbbsbs bbssssbsbss bsssbbbbsbs bsbssbbbbss bssbsbbbbss bssbssbbbbs bsbbbbssbss bssbbbbsbss bssbbbbssbs bbbbsbssbss bbbbssbsbss bbbbssbssbs bbsbbsbbbbs bbsbbbbsbbs bbbbsbbsbbs bsbsbbbbsss 5 / 8

93 94 95 96 97 98 99 100 101 102 103 104 105 106

GS RS US FNC3 FNC2 SHIFT CODEC CODEB FNC4 FNC1 StartA StartB StartC Stop } ~ DEL FNC3 FNC2 SHIFT 93 94 95 96 97 98 111341 131141 114113 114311 411113 411311 113141 bsbsssbbbbs bsssbsbbbbs bsbbbbsbsss bsbbbbsssbs bbbbsbsbsss bbbbsbsssbs bsbbbsbbbbs bsbbbbsbbbs bbbsbsbbbbs bbbbsbsbbbs bbsbssssbss bbsbssbssss bbsbssbbbss bbsssbbbsbsbb CODEC 99 FNC4 CODEB 114131 CODEA CODEA 311141 FNC1 StartA StartB StartC Stop FNC1 StartA StartB StartC Stop 411131 211412 211214 211232 2331112 Code128编码示例:以 95270078 为例

Code128A,开始位对应的ID为103,第1位数据9对应的ID为25,第2位数据5对应的ID为21,依此类推,可以计算检验位 = (103 + 1*25 + 2*21 + 3*18 + 4*23 + 5*16 + 6*16 + 7*23 + 8*24) % 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只能对长度为偶数的数字串编码,每两个数字为一位,所以输出

6 / 8

的信息压缩了一半,打印的条形码因此也就较短。接上例,第1位数据95对应ID为95,第2位数据27对应ID为27,第3位数据00对应ID为0,第4位数据78对应ID为78,所以检验位 = (105 + 1*95 + 2*27 + 3*0 + 4*78) % 103 = 51

EAN128与Code128C相同,只是在开始位后加多一个控制位FNC1(ID为102),同时将FNC1做为第1位数据加入到检验位的计算。 各种方式的编码结果罗列如下: 开始位 数FNC1 据位 9 + 5 + 2 + 7 Code128A StartA 无 + 0 + 0 + 7 + 8 9 + 5 + Code128B StartB 无 2 + 7 + 0 (104 + 1*25 + 2*21 + 3*18 + 4*23 + 5*16 + 6*16 + 7*23 + 8*24) % 7 / 8

bbsbssbssssbbbssbsbbssbbsbbbssbssbbssbbbssbsbbbsbbsbbbsbssbbbStop sbbssbssbbbsbbssbbbsbbsbbbsbbbsbssbbssbbssbbbsbssbbsssbbbsbsbb (103 + 1*25 + 2*21 + 3*18 + 4*23 + 5*16 + 6*16 + 7*23 + 8*24) % 103 = 21 bbsbssssbssbbbssbsbbssbbsbbbssbssbbssbbbssbsbbbsbbsbbbsbssbbbStop sbbssbssbbbsbbssbbbsbbsbbbsbbbsbssbbssbbsbbbssbssbbsssbbbsbsbb 检验位 结束位 编码方式 编码结果 + 0 + 7 + 8 95 + 27 Code128C StartC 无 + 00 + 78 103 = 22 (105 + 1*95 + 2*27 + 3*0 + 4*78) % 103 = 51 bbsbssbbbssbsbbbbsbsssbbbsbbssStop bssbbsbbssbbssbbssssbsbssbbsbbbsbsssbbsssbbbsbsbb 95 (105 + + 1*102 + bbsbssbbbssbbbbsbsbbbsbsbbbbsStop bsssbbbsbbssbssbbsbbssbbssbbssssbsbssbsssbbsbbbsbbsssbbbsbsbb 27 2*95 + EAN128 StartC FNC1 + 3*27 + 00 4*0 + + 5*78) % 78 103 = 44

结合CODE128 A、B、C,可以生成最优化的编码,即正确编码的同时使条码长度最短,这也是很多条码打印软件支持的,称为CODE128Auto,具体做法是在编码中加入编码控制符,切换编码方式。同上例95270078 字符个数为偶数,采用codec最优,编码方式为StartC + 95 + 27 + 00 + 78 + 校验 + stop,如果字符再增加一位,假设是952700780,可以修改为StartC + 95 + 27 + 00 + 78 +codeB + 0 + 校验 + stop

8 / 8

因篇幅问题不能全部显示,请点此查看更多更全内容

Top