admin 管理员组文章数量: 887021
2024年1月27日发(作者:友价房产系统源码)
条码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
版权声明:本文标题:条码code128编码规则 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1706308383h505347.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论