原理解说发布日期 阅读时间约 12 分钟

JAN码(EAN-13)校验码的计算方法|乘以3和1再相加即可。手算示例、Excel公式、ITF-14与ISBN

JAN码(日本对 EAN-13 的叫法)的最后一位叫作“校验码”,是根据前面12位计算出来的确认用数字。只知道12位却要登记商品时,或者想确认客户发来的13位条码是否正确时,会自己算就很方便。本文用一个真实的13位条码逐位演示:从右往左依次乘以 3、1、3、1…,相加后用 10 减去合计的个位数。同时介绍13位的构成(45·49 前缀、厂商代码、商品项目代码),8位的 EAN-8、UPC-A、外箱用的 ITF-14、日本图书条码、店内码的算法,用 11 去除的 ISBN-10 以及 X 的含义,Excel 和 Google 表格的公式,校验码能发现和发现不了的错误,以及常见的计算失误。

结论:从右往左乘以 3、1、3、1…,相加后用 10 减去个位数

13位 JAN 码的校验码,是用去掉最后一位的12位按下面的步骤算出来的。这种方法叫作“模10、权重3和1”,JAN 码的国际名称 EAN-13(GTIN-13)、8位的缩短型、美国的 UPC-A、纸箱上用的 ITF-14 都用同一种算法。

  • ① 把12位数字从右端(校验码左边紧挨着的那一位)开始,依次乘以 3、1、3、1…
  • ② 把所有乘积加起来
  • ③ 用 10 减去合计的个位数,得到的就是校验码
  • ④ 合计的个位数是 0 时,校验码也是 0(不是 10)

以 456995111617 这12位为例来算。12位时,相当于从左数奇数位乘以 1、偶数位乘以 3。

位置(从左数)123456789101112
数字456995111617
权重×1×3×1×3×1×3×1×3×1×3×1×3
乘积41562791513118121

乘积全部相加:4+15+6+27+9+15+1+3+1+18+1+21=121。个位数是 1,所以 10-1=9。校验码是 9,完整的 JAN 码是 4569951116179。

下面依次说明13位的含义、其他种类条码的算法、ISBN-10 这种用 11 去除的方式、Excel 公式、校验码能发现和发现不了的错误,以及常见的计算失误。本文中的数字都用与 JAN 码校验码计算工具相同的算法核对过。

13位 JAN 码的构成:前缀·厂商代码·商品项目代码·校验码

日本商品上的13位 JAN 码,从左起依次是“国家代码(GS1 前缀)”“厂商代码”“商品项目代码”“校验码”。日本企业向 GS1 Japan(一般财团法人流通系统开发中心)申请,领取以 45 或 49 开头的 GS1 厂商代码,然后在后面自行给每件商品编号。

厂商代码位数(含 45·49)商品项目代码可编号的商品数校验码
9位(现行标准)3位(000~999)1,000 种1位
10位(商品种类少的企业)2位(00~99)100 种1位
7位(很早就注册的企业)5位(00000~99999)10万种1位

无论哪种组合,去掉校验码后都是12位,算法也一样。校验码不能由编号的人自由决定,前12位一旦确定,正确的校验码就只有一个。

开头的数字含义
45·49日本(GS1 Japan 分配的号码)
00·01·06~13美国·加拿大(把 UPC 写成13位)
02·20~29店内码(只在一家店内部使用的号码)
69中国
880韩国
471台湾
978·979图书(ISBN)
191·192日本图书条码的第2行(分类代码和定价)

为什么要“从右数”:8位·12位·14位都能用同一个规则

乘以 3 的是从“校验码左边紧挨着的那一位”开始每隔一位的数字。如果从左数,13位 JAN 是偶数位,8位 EAN-8 却是奇数位,会随位数而颠倒。按从右数的规则,任何长度的条码都能用同一套步骤计算。

  1. 1

    写出去掉校验码的数字

    13位 JAN 写12位,8位 EAN-8 写7位,14位 ITF-14 写13位。手上有完整条码想核对时,先去掉最后一位。

  2. 2

    最右边的数字乘以 3,再往左依次乘以 1、3、1、3…

    无论哪种条码,最右边的一位都乘以 3。

  3. 3

    把乘积全部相加,看个位数

    合计 121 时个位是 1,合计 50 时个位是 0。也就是除以 10 的余数。

  4. 4

    用 10 减去个位数。个位是 0 时校验码为 0

    写成“(10 -(合计 mod 10)) mod 10”,一个式子就能把 0 的情况也包括进去。

以缩短型(EAN-8)的 4901234 为例,从右算:4×3+3×1+2×3+1×1+0×3+9×1+4×3=12+3+6+1+0+9+12=43。个位是 3,10-3=7,8位条码为 49012347。如果是 4512345,合计正好是 50,校验码为 0(45123450)。

各种条码的计算示例:EAN-8·UPC-A·ITF-14·图书条码·店内码

统称为 GTIN 的商品代码,位数不同但校验码的算法相同。下面整理了各种类去掉校验码后的位数和计算示例。

种类总位数参与计算的位数示例(不含校验码)合计校验码完整条码
JAN-13(EAN-13)131245699511161712194569951116179
JAN-8(缩短型)87490123443749012347
UPC-A(美国·加拿大)121103600029145582036000291452
ITF-14(外箱用)14131456995111617124614569951116176
ISBN-13(图书条码第1行)13129784101010015649784101010014
日本图书条码第2行13121920093015007641920093015004
店内码(含价格)13120212345003987550212345003985
  • UPC-A:前面加一个 0 就能当作13位的 EAN-13 读取。0 乘以任何数都是 0,所以校验码不变(036000291452 → 0036000291452)。
  • ITF-14:取单品 JAN 去掉校验码后的12位,在前面加1位表示装箱数量不同的指示符(1~8),再重新计算校验码。请注意原 JAN 末尾的 9 在 ITF-14 中变成了 6。
  • 日本图书条码第2行:由“192 + C 代码(分类代码)4位 + 定价(不含税)5位”组成12位,再加上校验码。示例是 C0093(一般读者·单行本·日本文学小说)、定价 1,500 日元。
  • 店内码:以 02 和 20~29 开头的号码,只在一家店内部使用。示例是“02 + 商品编号 12345 + 价格 398 日元”,需要把收银机设置成读取价格。

ISBN-10 用 11 去除,所以校验码可能是 X

2006年以前出版的图书上的10位 ISBN,算法与 JAN 码不同。把前9位从左依次乘以 10、9、8、7、6、5、4、3、2 后相加,用合计除以 11,再用 11 减去余数。结果为 10 时写作 X,为 11 时写作 0。

ISBN-10 的前9位加权合计除以 11 的余数11 - 余数校验码
4-10-10100140+9+0+7+0+5+0+0+2=63833(4-10-101001-3)
4-10-00007440+9+0+0+0+0+0+21+8=78110X(4-10-000074-X)

X 是罗马数字的 10。用 11 去除时答案有 0~10 共11种,一位数字写不下,所以只有 10 用 X 表示。X 不是印错了,在购物网站搜索时也请照原样输入。

把 ISBN-10 转成13位时,在前面加上 978,并用 JAN 码的方法重新计算最后一位。4-10-101001-3 变为 978-4-10-101001-4,4-10-000074-X 变为 978-4-10-000074-0。13位 ISBN 本身就是 EAN-13 条码,印在图书封底作为第1行条码。

在 Excel·Google 表格中计算校验码的公式

在 A1 单元格输入12位 JAN 码,在另一个单元格输入下面的公式即可得到校验码。Google 表格也能使用同样的公式。

用途公式(号码在 A1)
由12位求校验码=MOD(10-MOD(SUMPRODUCT(MID(A1,{1,3,5,7,9,11},1)*1)+SUMPRODUCT(MID(A1,{2,4,6,8,10,12},1)*3),10),10)
由12位得到13位=A1&MOD(10-MOD(SUMPRODUCT(MID(A1,{1,3,5,7,9,11},1)*1)+SUMPRODUCT(MID(A1,{2,4,6,8,10,12},1)*3),10),10)
核对13位是否正确(TRUE 为正确)=MOD(SUMPRODUCT(MID(A1,{1,3,5,7,9,11,13},1)*1)+SUMPRODUCT(MID(A1,{2,4,6,8,10,12},1)*3),10)=0

MID(A1,{1,3,5,…},1) 取出奇数位的数字乘以 1,偶数位乘以 3 后相加。“从左数偶数位乘以 3”只对12位的 JAN 数据成立。用于7位的 EAN-8 数据或13位的 ITF-14 数据时,请调换位置组合,使最右边的一位乘以 3。

  • 先把单元格格式设为“文本”再输入号码。如果是数值格式,开头的 0(UPC、店内码 02)会消失,或变成 4.57E+12 这样的科学计数法
  • 从 CSV 粘贴来的号码,要检查前后有没有空格或连字符。MID 会把空格也算作1个字符。用 Excel 打开 CSV 时商品名出现乱码,请参考CSV 乱码的解决方法
  • 对13位的列误用12位的公式,会忽略第13位,得到不同的结果

校验码能发现的错误·发现不了的错误

校验码是为了发现条码误读和手工输入错误而设的,但并不能发现所有错误。JAN 码的方法能发现的范围如下。

错误类型发现的比例原因·示例
只有1位不对100%乘以 1 或 3 后不会正好差 10 的倍数,所以合计的个位一定会变
相邻两位互换约 89%(90 种中 80 种)只有两个数字正好相差 5(0和5、1和6、2和7、3和8、4和9)时会漏掉
2位以上分散出错约 90%合计的个位碰巧相同的概率约为十分之一

例如把 4569951116179 的第9位和第10位(1 和 6)互换得到 4569951161179,会直接通过校验,因为 1 和 6 相差 5。反过来,把末尾的 7 和 9 互换得到的 4569951116197 会被判定为不正确,工具会给出“相邻两位换回来就正确的候选”4569951116179。

即使校验码正确,也不代表这个号码的商品真实存在。核对客户发来的清单时,先用校验码减少输入错误,再对照商品名称和规格才稳妥。

常见的计算失误,以及只靠校验码做不到的事

  • 从最左边开始乘以 3:13位 JAN 的最左一位(开头的 4)乘的是 1。从 3 开始乘,几乎都会算错
  • 合计个位为 0 时写成“10”:校验码一定是1位数,这种情况是 0
  • 给13位再加一个校验码:已经有13位时,最后一位就是校验码。想核对时先去掉它再计算
  • 用合计除以 10 的“商”:要用的是余数(个位数)
  • 把 ISBN-10 的 X 删掉或改成 0:X 是表示 10 的正确校验码。转成13位后会变成别的数字

即使正确算出了校验码,号码本身也不会因此成为正式的 JAN 码。在商店或网店销售的商品,需要在 GS1 Japan(或所在国家的 GS1 机构)注册厂商代码,并使用该范围内的号码。注册需要缴纳费用,并且要定期续期。无需注册就能自由使用的只有以 02 和 20~29 开头的店内码,而且只能在自己的店内使用。

印刷的条码尺寸也有规定。放大系数 100% 的 JAN 条码,最细的条宽为 0.33mm,包括左右空白的宽度为 37.29mm;为了容易读取,应在 80~200% 的范围内使用。空白区(静区)里不要放图案或文字,背景用白色或浅色、条用黑色或深色,印好后用真实的扫描器确认能否读取,这些是基本要求。读不出来时排查原因的方法,很多与二维码扫不出来时的对策相同。

用 JAN 码校验码计算工具核对,并生成条码

在 JAN 码校验码计算·条码生成工具中输入12位,就会显示加上校验码的13位,以及和本文表格一样的“位置·数字·权重·乘积”计算过程。输入13位则判断是否正确,如果不对,会列出相邻两位互换或改动1位后即可正确的候选。带连字符或全角数字直接粘贴也可以。

  1. 1

    输入号码

    输入12位就计算校验码,输入13位就进行核对。已知种类时可以选择 JAN-8·UPC-A·ITF-14·ISBN-10。自动判别时12位会被视为不含校验码的 JAN-13,所以 UPC-A 请手动选择种类。

  2. 2

    大量号码一次计算

    在“批量计算”中每行粘贴一个号码,全部结果可以用制表符分隔复制回 Excel。

  3. 3

    需要时生成条码

    选择放大系数和条高,以实际尺寸的 SVG 或 300~1200dpi 的 PNG 保存。也支持日本图书的两行条码、店内码和 ITF-14。

输入的号码只在设备内计算,不会发送到任何地方。尚未公开的新商品号码也能放心核对。

常见问题

JAN码(EAN-13)的校验码怎么计算?
把去掉校验码的12位从右往左依次乘以 3、1、3、1…,相加后用 10 减去合计的个位数。456995111617 的合计是 121,用 10 减去个位的 1 得 9,所以 JAN 码是 4569951116179。个位为 0 时校验码也是 0。
校验码会是 10 吗?
JAN 码不会。合计的个位为 0 时,校验码是 0 而不是 10。例如缩短型的 4512345 合计正好是 50,校验码为 0(45123450)。把 10 写成 X 的只有用 11 去除的 ISBN-10。
从左数奇数位乘以 1、偶数位乘以 3,这样对吗?
对13位 JAN(不含校验码12位)来说是对的。但原本的规则是“从校验码左边一位开始 3、1、3、1…”,所以8位的 EAN-8(用7位计算)和14位的 ITF-14(用13位计算)都是从左数奇数位乘以 3。
ISBN 最后是 X 是不是错了?
不是错误。10位 ISBN 用 11 去除来计算,校验码可能是 10,这时用罗马数字 X 表示。4-10-000074 这9位的合计是 78,除以 11 余 1,11-1=10,所以是 X。转成13位后是 978-4-10-000074-0。
在 Excel 里怎样计算校验码?
在 A1 以文本形式输入12位,然后输入 =MOD(10-MOD(SUMPRODUCT(MID(A1,{1,3,5,7,9,11},1)*1)+SUMPRODUCT(MID(A1,{2,4,6,8,10,12},1)*3),10),10)。在开头加上 A1& 就能显示13位。单元格是数值格式时,开头的 0 会消失或变成科学计数法,请设为文本格式。
校验码对上了,号码就一定正确吗?
不能这么断定。只错1位一定能发现,但相差 5 的数字(如 1 和 6)相邻互换会漏掉,2位以上的错误也大约每 10 次有1次会通过。而且即使校验码正确,也不一定存在这个号码的商品。
自己定一个号码再加上校验码,能当作 JAN 码使用吗?
不能用于在商店或网店销售的商品。需要在 GS1 Japan(或所在国家的 GS1 机构)注册厂商代码,并在其范围内编号。无需注册就能自由生成的是以 02·20~29 开头的店内码,只能在自己的店内使用。
ITF-14 的校验码和 JAN 的算法一样吗?
算法相同。把1位指示符和 JAN 的12位排成13位,从右往左乘以 3、1、3、1…相加,再用 10 减去个位数。4569951116179 的外箱(指示符 1)为 1456995111617,合计 124,校验码是 6,即 14569951116176。原 JAN 末尾的 9 不使用。

本文介绍的工具

相关文章

原理解说约 13 分钟

1RM(最大重量)怎么算|100kg 做 10 次的 1RM 是多少?7 个推算公式的区别与速查表、RM 换算表、%1RM 和不同目标的重量

“卧推 80kg 能做 8 次,最大重量是多少?”“1RM 是 100kg,做 10 次该用多少公斤?”只能举起 1 次的最大重量(1RM)不必真的去挑战极限,用举起的重量和次数就能推算。本文用实际算出的数字,依次说明最常用的 Epley 公式 1RM = 重量 ×(1 + 次数 ÷ 30)、Brzycki、O'Conner 等 7 个推算公式与 NSCA 换算表的区别、次数越多公式之间差距越大的原因、由重量 × 次数查 1RM 的速查表、由 1RM 求各次数重量的 RM 换算表、没有做到力竭时如何用 RIR 和 RPE 修正、力量·增肌·肌耐力各自适合的重量,以及实测 1RM 时的热身和杠铃片的配法。

阅读文章 →
原理解说约 14 分钟

马票注数的计算方法|三重彩·单T 的复式·胆拖·组合是多少注?公式与速查表,多重·框连同框·合成赔率·中了也亏

“三重彩 5 匹复式是多少注?”“胆拖改成多重会多出多少注?”“组合投注是不是把候选数相乘就行?”。买马票之前如果不先算好注数和金额,投注可能比想象的多而超出预算,或者中了之后派彩反而比投注总额少,也就是“中了也亏”。本文以 JRA 的独赢·位置·框连·连赢·位置Q·二重彩·单T·三重彩 8 种彩池为对象,配合计算实例整理:复式·胆拖(1 只胆·2 只胆·多重·全拖)·组合的注数公式与速查表,组合投注中重复投注的数法,不同出赛马数的全部组合数与框号·马号的分配,框连同框组合可以购买的条件,合成赔率的计算与中了也亏的判断,让不论哪注中派彩都接近的预算分配,各彩池的派彩率,以及 WIN5 的注数。

阅读文章 →
原理解说约 14 分钟

分贝(dB)的计算方法|加法·减法·平均·距离衰减的公式和速查表,从 60 dB + 60 dB 为什么是 63 dB 到背景噪声修正和环境标准

“两台 60 dB 的空调外机一起开,是 120 dB 吗?”“测了几次的噪声值,加起来除一下就是平均吗?”“离隔壁 10 米,声音会降到多少 dB?”分贝(dB)是用对数表示的值,像普通数字那样直接相加或求平均,结果会差得很远。本文用实际算出的数字,整理了 dB 的含义和基准声压(20 µPa)、dB 差在声能·声压·听感上分别是几倍、加法(叠加)和 n 个相同声源的公式、按差值查的加法速查表、能量平均与算术平均的区别、减去背景噪声的减法和 JIS Z 8731 的修正值、点声源·线声源的距离衰减和降到目标 dB 的距离、空调外机·道路·施工的计算示例、噪声参考值和日本的环境标准,以及用声级计或手机测量时的注意事项。

阅读文章 →