UPC-E
1、概述
UPC-E码又称UPC缩短码,是UPC-A码的简化模式,UPC-E商品条码不含中间的分隔符,从左到右是有左侧空白区、起始字符、数据字符、终止字符、右侧空白区,以及供人识别的字符组成。
2、条码的组成
UPC-E有8位数字构成 , 1位系统字符 + 6位数据字符 + 1位检验字符。条码格式如下:
区域划分:
左侧空白区 | 起始符 | 数据符 | 校验符 | 终止符 | 右侧空白区 |
---|---|---|---|---|---|
9个模块 | 3个模块 | 42个模块 | 7个模块 | 6个模块 | 9个模块 |
代码划分:
系统字符 | 数据字符 | 校验码 |
---|---|---|
1位数字 | 6位数字 | 1位数字 |
3、编码解析
- 左侧空白区
位于条码的最左侧,其最小宽度为9个条形模块宽度 - 系统字符
系统字符是不用条码符号表示的,系统字符不是 0 就是 1 。 - 起始符
位于左侧空白区的右侧,表示信息开始的特殊符号,由3个条形模块组成,逻辑为101(1代表细黑,0代表细白)。 - 数据符
数据符有6位数字信息,由42个条形模块组成,每个数字对应7个条形模块。数据符有A、B两类编码,通过校验码来选择数据符选择的编码逻辑。 - 校验码
校验码也不用条码符号表示,主要功能是用于数据字符的编码逻辑选择。 - 终止符
表示信息结束的特殊符号,由6个条形模块组成,逻辑为010101(1代表细黑,0代表细白)。 - 右侧空白区
位于条码的最右侧,其最小宽度为9个条形模块宽度
编码逻辑:
校验码 | 系统字符为 0 | 系统字符为 1 |
---|---|---|
0 | BBBAAA | AAABBB |
1 | BBABAA | AABABB |
2 | BBAABA | AABBAB |
3 | BBAAAB | AABBBA |
4 | BABBAA | ABAABB |
5 | BAABBA | ABBAAB |
6 | BAAABB | ABBBAA |
7 | BABABA | ABABAB |
8 | BABAAB | ABABBA |
9 | BAABAB | ABBABA |
A、B类编码说明:
数字 | A类编码 | B类编码 |
---|---|---|
0 | 0001101 | 0100111 |
1 | 0011001 | 0110011 |
2 | 0010011 | 0011011 |
3 | 0111101 | 0100001 |
4 | 0100011 | 0011101 |
5 | 0110001 | 0111001 |
6 | 0101111 | 0000101 |
7 | 0111011 | 0010001 |
8 | 0111011 | 0001001 |
9 | 0001011 | 0010111 |
Zero Compressed UPC-E
To allow the use of UPC barcodes on smaller packages where a full 12-digit barcode may not fit, a ‘zero-compressed’ version of UPC was developed called UPC-E. This symbology differs from UPC-A in that it only uses a 6-digit code, does not use middle guard bars, and the end bit pattern (E) becomes 010101. The way in which a 6-digit UPC-E relates to a 12-digit UPC-A is determined by the last (right-hand most) digit. With the manufacturer code represented by X’s, and product code by N’s then:
Last digit | UPC-E equivalent is | UPC-A equivalent is |
---|---|---|
0 | XXNNN0 | 0XX000-00NNN + check |
1 | XXNNN1 | 0XX100-00NNN + check |
2 | XXNNN2 | 0XX200-00NNN + check |
3 | XXXNN3 | 0XXX00-000NN + check |
4 | XXXXN4 | 0XXXX0-0000N + check |
5 | XXXXX5 | 0XXXXX-00005 + check |
6 | XXXXX6 | 0XXXXX-00006 + check |
7 | XXXXX7 | 0XXXXX-00007 + check |
8 | XXXXX8 | 0XXXXX-00008 + check |
9 | XXXXX9 | 0XXXXX-00009 + check |
校验位计算
1、先将 upc-e 转成 upc-a
2、使用upc-a校验位计算方法计算
例如:upc-a 码: 012587700457 (7是校验位)
//c1 = (0+2+8+7+0+5)×3=66;
//c2 = (1+5+7+0+4)=17;
c1 = (0+2+8+7+0+5)×3;
c2 = (1+5+7+0+4);
CC = (C1 + C2)%10;
C = 10 - CC;
if(10 == C)
C = 0;
参考文件:https://download.csdn.net/download/qq_41382608/85907545