因为最近工作中用到UPC-A码,所以就研究了下,先简单介绍下UPC-A码
UPC码是美国统一代码委员会制定的一种商品用条码,主要用于美国和加拿大地区,我们在美国进口的商品上可以看到。UPC码(Universal Product Code)是最早大规模应用的条码,其特性是一种长度固定、连续性的条码,目前主要在美国和加拿大使用,由于其应用范围广泛,故又被称万用条码。 UPC码仅可用来表示数字,故其字码集为数字0~9。
主要格式如下图:
UPC-A
旗码、厂商代码、产品代码需要跟相关部门申请,检查码是根据前面的代码生成出来的,生成规则如下:
从国别码开始自左至右取数,设UPC-A各码代号如下:
N1 N2 N3 N4 N5 N6 N7 N8 N9 N10 N11 C
则检查码之计算步骤如下:
C1 = N1+ N3+N5+N7+N9+N11
C2 = (N2+N4+N6+N8+N10)× 3
CC = (C1+C2) 取个位数
C (检查码) = 10 – CC (若值为10,则取0)
C#生成检查码的代码如下:
//假设旗码为7,厂商代码为08502,传入产品代码即可生成出upc-a码 private const string code = "708502"; public string GetCodeUPC(string number) { string strcode = code + number; int c1 = int.Parse(strcode[10].ToString()) + int.Parse(strcode[8].ToString()) + int.Parse(strcode[6].ToString()) + int.Parse(strcode[4].ToString()) + int.Parse(strcode[2].ToString()) + int.Parse(strcode[0].ToString()); int c2 = c1 * 3; int c3 = 0 + int.Parse(strcode[1].ToString()) + int.Parse(strcode[3].ToString()) + int.Parse(strcode[5].ToString()) + int.Parse(strcode[7].ToString()) + int.Parse(strcode[9].ToString()); int c4 = c2 + c3; int c = 10 - c4 % 10; if (c == 10) c = 0; string upc = strcode + c.ToString(); return upc; }
原文:http://www.cnblogs.com/sunsoftware/p/4201345.html