校验位
校验位是条码号码末尾的一位(有时多位)附加数字,由前面所有数字按固定公式算出来。它本身不携带商品信息,作用是发现错误:扫错、印错、手输错了一位,重算校验位就对不上,系统就能察觉。
以 EAN-13 为例,校验位的算法是:把前 12 位按位置分别乘以 1 和 3 相加,用 10 减去这个和的个位数,得到最后一位。UPC、ITF-14、ISBN 用的是类似的加权取模方法;Code128、Code93、MSI 等也各有自己的校验算法。
正因为有固定公式,生成条码时你只要输入正文数字,工具就能自动算出并补上校验位,不用手工计算。校验位能查出大多数单点错误,但不能保证百分百,也不能纠正错误(只是发现)。
常见问题
校验位是干什么用的?
用来发现号码有没有被扫错、印错或输错。它由前面的数字按公式算出,任何一位出错都会导致校验对不上,从而被系统识别出来。
校验位要自己算吗?
不用。生成条码时输入正文数字,工具会按对应码制的公式自动算出校验位并补在末尾。
校验位能纠正错误吗?
不能,它只能发现错误、不能纠正。要能纠正需要更强的纠错编码,比如二维码用的里德-所罗门纠错。