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


本文标签: 编码 长度 条码 数据