首页 > 代码库 > C# 生成UPC-A码

C# 生成UPC-A码

因为最近工作中用到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;        }

 

C# 生成UPC-A码