EAN-13 条形码校验位计算验算规则

3,785 阅读2分钟

EAN-13 百科

European Article Number (欧洲物品编码的缩写),其中共计13位代码的EAN-13是比较通用的一般终端产品的条形码协议和标准,主要应用于超级市场和其它零售业,因此这种是我们比较常见的,随便拿起身边的一个从超市买来的商品都可以从包装上看得到。

编码位13位,其中前3位是国家和地区代码(我国大陆地区为690-699),中间5-6位是厂商识别码(早期是5位,现在有些新申请的是6位),其后4位(6位的厂商识别码预留的是为3位)是产品编码,由厂商自行确定。最后一位是自动生成的校验码。

如果条码是自行生产则前12位可以自行随机或按自行规则生产,但是最后一位位校验码,必须统计算公式算出来。

校验码生产规则

校验码是由前12位数按一定公式计算而得出的.其计算公式见下表.

步骤举例说明
① 自左向右如:210213400150X (x为校验码)
② 计算偶数位上的数字之和1+2+3+0+1+0 = 7
③ 偶数位之和 * 37 * 3 = 21
④ 计算奇数位上的数字之和2+0+1+4+0+5 = 12
⑤ 偶数位之和 * 3 加奇数位之和21 + 12 = 33
⑥ 10 - ⑤ 的最后一位 (如果为10则校验位为0)10 - 3 = 7

最后校验位为 7
2102134001507

EAN-13编码的校验位计算方法,以JS为例

function  _EAN13(CodeString) {
      if (CodeString == "") return "";
      if (CodeString.length > 12) CodeString = CodeString.substring(0, 12);
      let Code = CodeString.split("");
      var A = 0;
      var B = 0;
      for (let i = 0; i < Code.length; i++) {
        if (i % 2 == 1) {
          A += parseInt(Code[i]);
        }
        else {
          B += parseInt(Code[i]);
        }
      }
      var C1 = B;
      var C2 = A * 3;
      var CC = (C1 + C2) % 10;
      var CheckCode = (10 - CC) % 10;
      return CodeString + CheckCode;
    }