条形码code128编码规则
条形码或称条码(barcode)是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符。常见的条形码是由反射率相差很大的黑条(简称条)和白条(简称空)排成的平行线图案。条形码可以标出物品的生产国、制造厂家、商品名称、生产日期、图书分类号、邮件起止地点、类别、日期等信息,因而在商品流通、图书管理、邮政管理、银行系统等许多领域都得到了广泛的应用。
条形码分类
条形码按类型可分为:线性条形码
和矩阵(二维)条形码
code128编码
Code 128
是ISO/IEC 15417:2007[1]定义的条形码规范。
Code 128条码可以对全部128个ASCII字符(包括数字、大小写字母、符号和控制符)进行编码。
code128码是广泛应用在企业内部管理、生产流程、物流控制系统方面的条码码制,由于其优良的特性在管理信息系统的设计中被广泛使用,CODE128码是应用最广泛的线性条形码制之一。
code128编码分类
code128 A字符集:包括大写字母、数字、常用标点符号和一些控制符。
code128B 字符集:包括大小写字母、数字、常用标点符号。
code128C 字符集: 为纯数字序列。
code128Auto:是将上述三种字符集最佳优化组合。
code128编码构成
一个Code 128条形码由六部分组成。
- 空白区域
- 起始标记
- 数据区
- 校验符
- 终止符
- 空白区域
code128编码表
ID | Code128A | Code128B | Code128C | BandCode | 图案 |
---|---|---|---|---|---|
0 | SP | SP | 0 | 212222 | 11011001100 |
1 | ! | ! | 1 | 222122 | 11001101100 |
2 | “ | “ | 2 | 222221 | 11001100110 |
3 | # | # | 3 | 121223 | 10010011000 |
4 | $ | $ | 4 | 121322 | 10010001100 |
5 | % | % | 5 | 131222 | 10001001100 |
6 | & | & | 6 | 122213 | 10011001000 |
7 | ‘ | ‘ | 7 | 122312 | 10011000100 |
8 | ( | ( | 8 | 132212 | 10001100100 |
9 | ) | ) | 9 | 221213 | 11001001000 |
10 | * | * | 10 | 221312 | 11001000100 |
11 | + | + | 11 | 231212 | 11000100100 |
12 | , | , | 12 | 112232 | 10110011100 |
13 | - | - | 13 | 122132 | 10011011100 |
14 | . | . | 14 | 122231 | 10011001110 |
15 | / | / | 15 | 113222 | 10111001100 |
16 | 0 | 0 | 16 | 123122 | 10011101100 |
17 | 1 | 1 | 17 | 123221 | 10011100110 |
18 | 2 | 2 | 18 | 223211 | 11001110010 |
19 | 3 | 3 | 19 | 221132 | 11001011100 |
20 | 4 | 4 | 20 | 221231 | 11001001110 |
21 | 5 | 5 | 21 | 213212 | 11011100100 |
22 | 6 | 6 | 22 | 223112 | 11001110100 |
23 | 7 | 7 | 23 | 312131 | 11101101110 |
24 | 8 | 8 | 24 | 311222 | 11101001100 |
25 | 9 | 9 | 25 | 321122 | 11100101100 |
26 | : | : | 26 | 321221 | 11100100110 |
27 | ; | ; | 27 | 312212 | 11101100100 |
28 | < | < | 28 | 322112 | 11100110100 |
29 | = | = | 29 | 322211 | 11100110010 |
30 | > | > | 30 | 212123 | 11011011000 |
31 | ? | ? | 31 | 212321 | 11011000110 |
32 | @ | @ | 32 | 232121 | 11000110110 |
33 | A | A | 33 | 111323 | 10100011000 |
34 | B | B | 34 | 131123 | 10001011000 |
35 | C | C | 35 | 131321 | 10001000110 |
36 | D | D | 36 | 112313 | 10110001000 |
37 | E | E | 37 | 132113 | 10001101000 |
38 | F | F | 38 | 132311 | 10001100010 |
39 | G | G | 39 | 211313 | 11010001000 |
40 | H | H | 40 | 231113 | 11000101000 |
41 | I | I | 41 | 231311 | 11000100010 |
42 | J | J | 42 | 112133 | 10110111000 |
43 | K | K | 43 | 112331 | 10110001110 |
44 | L | L | 44 | 132131 | 10001101110 |
45 | M | M | 45 | 113123 | 10111011000 |
46 | N | N | 46 | 113321 | 10111000110 |
47 | O | O | 47 | 133121 | 10001110110 |
48 | P | P | 48 | 313121 | 11101110110 |
49 | Q | Q | 49 | 211331 | 11010001110 |
50 | R | R | 50 | 231131 | 11000101110 |
51 | S | S | 51 | 213113 | 11011101000 |
52 | T | T | 52 | 213311 | 11011100010 |
53 | U | U | 53 | 213131 | 11011101110 |
54 | V | V | 54 | 311123 | 11101011000 |
55 | W | W | 55 | 311321 | 11101000110 |
56 | X | X | 56 | 331121 | 11100010110 |
57 | Y | Y | 57 | 312113 | 11101101000 |
58 | Z | Z | 58 | 312311 | 11101100010 |
59 | [ | [ | 59 | 332111 | 11100011010 |
60 | \ | \ | 60 | 314111 | 11101111010 |
61 | ] | ] | 61 | 221411 | 11001000010 |
62 | ^ | ^ | 62 | 431111 | 11110001010 |
63 | _ | _ | 63 | 111224 | 10100110000 |
64 | NUL | ` | 64 | 111422 | 10100001100 |
65 | SOH | a | 65 | 121124 | 10010110000 |
66 | STX | b | 66 | 121421 | 10010000110 |
67 | ETX | c | 67 | 141122 | 10000101100 |
68 | EOT | d | 68 | 141221 | 10000100110 |
69 | ENQ | e | 69 | 112214 | 10110010000 |
70 | ACK | f | 70 | 112412 | 10110000100 |
71 | BEL | g | 71 | 122114 | 10011010000 |
72 | BS | h | 72 | 122411 | 10011000010 |
73 | HT | i | 73 | 142112 | 10000110100 |
74 | LF | j | 74 | 142211 | 10000110010 |
75 | VT | k | 75 | 241211 | 11000010010 |
76 | FF | I | 76 | 221114 | 11001010000 |
77 | CR | m | 77 | 413111 | 11110111010 |
78 | SO | n | 78 | 241112 | 11000010100 |
79 | SI | o | 79 | 134111 | 10001111010 |
80 | DLE | p | 80 | 111242 | 10100111100 |
81 | DC1 | q | 81 | 121142 | 10010111100 |
82 | DC2 | r | 82 | 121241 | 10010011110 |
83 | DC3 | s | 83 | 114212 | 10111100100 |
84 | DC4 | t | 84 | 124112 | 10011110100 |
85 | NAK | u | 85 | 124211 | 10011110010 |
86 | SYN | v | 86 | 411212 | 11110100100 |
87 | ETB | w | 87 | 421112 | 11110010100 |
88 | CAN | x | 88 | 421211 | 11110010010 |
89 | EM | y | 89 | 212141 | 11011011110 |
90 | SUB | z | 90 | 214121 | 11011110110 |
91 | ESC | { | 91 | 412121 | 11110110110 |
92 | FS | | | 92 | 111143 | 10101111000 |
93 | GS | } | 93 | 111341 | 10100011110 |
94 | RS | ~ | 94 | 131141 | 10001011110 |
95 | US | DEL | 95 | 114113 | 10111101000 |
96 | FNC3 | FNC3 | 96 | 114311 | 10111100010 |
97 | FNC2 | FNC2 | 97 | 411113 | 11110101000 |
98 | SHIFT | SHIFT | 98 | 411311 | 11110100010 |
99 | CODEC | CODEC | 99 | 113141 | 10111011110 |
100 | CODEB | FNC4 | CODEB | 114131 | 10111101110 |
101 | FNC4 | CODEA | CODEA | 311141 | 11101011110 |
102 | FNC1 | FNC1 | FNC1 | 411131 | 11110101110 |
103 | StartA | StartA | StartA | 211412 | 11010000100 |
104 | StartB | StartB | StartB | 211214 | 11010010000 |
105 | StartC | StartC | StartC | 211232 | 11010011100 |
106 | Stop | Stop | Stop | 2331112 | 1100011101011 |
code128检验位计算
(开始位对应的ID值 + 每位数据在整个数据中的位置×每位数据对应的ID值)% 103
Code128编码示例
以 PZ1704946715
为例,开始为code128A,开始位对应的ID为103,第1位数据P对应的ID为48,第2位数据Z对应的ID为58,依此类推,可以计算。
检验位 = (103 + 1 * 48 + 2 * 58 + 3 * 17 + 4 * 23 + 5 * 16 + 6 * 20 +7 * 25 + 8 * 20 + 9 * 22 + 10 * 23 + 11 * 17 + 12 * 21) % 103 = 61
即检验位的ID为61。
对照编码表,PZ1704946715
编码表示为:开始位Start Code
A(11010000100)+ 数据位[P(11101110110)+
Z(11101100010)+1(10011100110)+ 7(11101101110)+
0(10011101100)+ 4(11001001110)+ 9(11100101100)+
4(11001001110)+ 6(11001110100)+ 7(11101101110)+
1(10011100110)+ 5(11011100100)]+ 检验位61(11001000010)+
结束位Stop(1100011101011)
若要打印,只需将1用黑色线标出,0用白色线标出,就完成一个简单的条形码生成。