通用产品代码

维基百科,自由的百科全书
跳转至: 导航搜索

通用产品代码(Universal Product Code),通常简称UPC码,是美国统一编码协会(UCC)制定的一种商品条码,主要在美国加拿大使用。在其基础之上发展起来的EAN码则已发展成为适用范围最广的通用条码。

历史[编辑]

UPC码是在IBM公司工程师諾曼·伍德蘭的环形码基础上诞生的。1966年,美国国家食物连锁协会(National Association of Food Chains (NAFC))要求研制一种加快货物验收速度的设备,国家收款机(National Cash Register,IBM公司的前身)在1967年开发出了用来替代伍德兰德牛眼码的一种新式同心圆环码。 1970年夏天,应国家食物连锁协会要求,Logicon公司开发出了食品工业统一码(Universal Grocery Products Identification Code (UGPIC))。很快,美国超市Ad Hoc组织在Logicon公司建议下制造了UPC码。美国统一编码协会在1973年建立了UPC码系统,并且实现了该码制标准化。UPC码首先在杂货零售业中试用,1974年6月25日,俄亥俄州的Marsh超级市场安装了由NCR制造的第一台UPC扫描器。在使用UPC条码的27种商品中,第一个被收银员沙龙·布坎南(Sharon Buchanan)扫描的是标价69美分的十片装箭牌口香糖。在十年内,条码扫描器攻占了一半的美国超市。至1989年,达到全美食品店的62%。

[1992年]香港惠康超級市場成為全港第一家使用UPC系統的超市,為客人提供更快更方便的付款服務。根據2004-2008的報告,惠康超級市場的分店數目因而提升。

编码规则[编辑]

UPC条码

UPC码只能用来表示0-9的数字。每7个模组表达一个字符,每个模组有空(白色)与条(黑色)两种状态。 UPC码又分为UPC-A、B、C、D、E五种版本。

UPC-A码[编辑]

用于通用商品,是适用范围最广的一种UPC码。一共有113个模组,每个模组长0.33毫米。左右两个各由9个模组组成的空白。UPC-A码是定长码,只能表示12位数字。从左至右,依次是3个模组(101)的起始码、1位的系统码、5位的左侧数据码、5个模组(01010)的中间码、5位的右侧数据码、检查码、3个模组(101)的终止码。其中,起始码、中间码、终止码的模组长度都要长于数据码。

  • 对应法则:左侧数据码与右侧数据码的数值对应规则并不相同,左侧数据码含有奇数个模组,右侧数据码含有偶数个。黑色模组对应逻辑值为1,白色则为0。
左侧资料码 右侧资料码
数值 逻辑值 逻辑值
0 0001101 1110010
1 0011001 1100110
2 0010011 1101100
3 0111101 1000010
4 0100011 1011100
5 0110001 1001110
6 0101111 1010000
7 0111011 1000100
8 0110111 1001000
9 0001011 1110100

可以看出,左侧数据码是右侧数据码的反码。 以上图中的数字4为例:首先确定它是右侧数据码,然后读取出它的逻辑值:1011100。转换成条与空则是:细黑(1)、细白(0)、粗黑(111)、粗白(00)。

  • 检查码:检查码为全部12位数据码最后一位。如果从左至右依次将数据码前十一位命名为N1-N11,检查码命名为C。则检查码C的计算方式如下:

CC =(N1+N3+N5+N7+N9+N11)* 3 +(N2+N4+N6+N8+N10)然后取个位。 C=10-CC(若C值为10,则取0)。 以图中条码为例,cc=(0+6+0+2+1+5)*3+(3+0+0+9+4)=58 c=2

UPC-B\C\D码[编辑]

与UPC-A码基本相同。其中:B码主要用于医药卫生;C码用于产业部门,第二位为系统码,倒数第二位为检查码;D码用于仓库批发,倒数第三位为检查码

UPC-E码[编辑]

短码,总长度为8个字码。A码与E码之间数字的对应规则与最后一位检查码有关。如下:

检查码 UPC-E UPC-A
0 XXNNN0 0XX000-00NNN+检查码
1 XXNNN1 0XX100-00NNN+检查码
2 XXNNN2 0XX200-00NNN+检查码
3 XXXNN3 0XXX00-000NN+检查码
4 XXXXN4 0XXXX0-0000N+检查码
5 XXXXX5 0XXXXX-00005+检查码
6 XXXXX6 0XXXXX-00006+检查码
7 XXXXX7 0XXXXX-00007+检查码
8 XXXXX8 0XXXXX-00008+检查码
9 XXXXX9 0XXXXX-00009+检查码
  • 对应法则:至于数字与模组之间的对应关系,也与最后一位有关:
检查码 规则
0 EEEOOO
1 EEOEOO
2 EEOOEO
3 EEOOOE
4 EOEEOO
5 EOOEEO
6 EOOOEE
7 EOEOEO
8 EOEOOE
9 EOOEOE

E表示偶码,O表示奇码。UPC-E的奇码与UPC-A的奇码完全相同。

奇码 偶码
数值 逻辑值 逻辑值
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 0110111 0001001
9 0001011 0010111
  • 检验码:计算UPC-E的检查码时,先将其转换为对应的UPC-A码,然后按照一样的模式计算出检查码即可。

参考资料[编辑]