计算校验码计算公式有三种:公式1:X 1 = CHR( M - (( ∑i=2n(ASC (X i ) · R i ) + C )MOD M ))公式2:X 2 = CHR( M - (( ∑i=3n(ASC (X i ) · R i ) + ASC (X 1 ) · R 1 MOD M ))公式3:X 3 = CHR(( ∑i=2n(ASC ( X i ) · R i ) )MOD M )公式中:n — —本体码和校验码的编码个数;i — —从右边开始,编码所在位置索引, i =1表示最右边编码(通常是校验码),空格和分割符不包括在内;X 1 — —校验码,仅有库巴德条码(模16补码)的校验码是 X 2 ;X i — —在 i 位置上的编码;R i — —在 i 位置上的权值;C — —计算总和后,需要加的常数;步骤自右向左顺序编号a)从序号2开始求出偶数位上数字之和①b ) ①×3=②c)从序号3开始求出奇数位上数字之和③d)②+③=④e) 用大于或等于结果④且为10的整数倍的最小数减去④,其差即为所求校验码的值举例说明4+2+0+6=12 ①12×3=36 ②3+1+9=13 ③36+13=49 ④50-49=1校验码X 1 =1位置序号代码867960514233241X 1图1 国标GB12904-2008《商品条码 零售商品编码与条码表示》8位编码校验码计算方法示例图2 国标GB12904-2008《商品条码 零售商品编码与条码表示》13位编码校验码计算方法示例步骤自右向左顺序编号a)从序号2开始求出偶数位上数字之和①b )①×3=②c)从序号3开始求出奇数位上数字之和③d)②+③=④e)用大于或等于结果④且为10的整数倍的最小数减去④,其差即为所求校验码的值举例说明9+7+5+3+1+9=34 ①34×3=102 ②8+6+4+2+0+6=26 ③102+26=128 ④130-128=2校验码X 1 =2位置序号代码13612911010192837465564738291X 143 条码与信息系统 2018年第2期BAR CODE & INFORMATION SYSTEM表1 有校验码及算法的相关标准序号12345678910标准号GB/T 5795-2006GB 12904-2008GB/T 16828-2007GB/T 18283-2008GB/T 12907-2008GB/T 12908-2002GB/T 15425-2014GB/T 18347-2001GB/T 16829-2003GB/T 16830-2008标准名称中国标准书号商品条码 零售商品编码与条码表示商品条码 参与方位置编码与条码表示商品条码 店内条码库德巴条码信息技术 自动识别和数据采集技术 条码符号规范 三九条码商品条码 128条码128条码信息技术 自动识别与数据采集技术 条码码制规范 交插二五条码商品条码 储运包装商品编码与条码表示算法在标准中的位置附录C 13位数字中国标准书号的校验码,C.3,8页;附录F 10位数字中国标准书号,F.2,11页附录B 校验码的计算方法,B.2,15页附录A 校验码的计算方法,3页附录A 价格或度量值的校验码计算方法,A.2、A.3,3页、4页附录B 非强制性特性,B.3,8页、9页附录A 附加的特性,A.1,5页附录C GS1-128条码符号校验字符值的计算方法,20页附录A 128码的附加特性,A1,12页附录A 附加特征,A.2,6页附录A 储运包装商品14位代码中校验码计算,A.2,4页条码EAN/UPC条码库德巴条码三九条码128条码交插二五条码EAN/UPC、ITF-14或128条码条码结构EAN/UCC-8UCC-12EAN/UCC-13EAN/UCC-1413位中国标准书号10位中国标准书号交插二五条码 ①14位储运包装商品条码店内条码中4位价格码 ⑤店内条码中5位价格码 ⑤库巴德条码 ① (模16补码 ② )库巴德条码(模10补码 ③ )三九条码 ①GS1-128条码 ①④说明:①交插二五条码、库巴德条码、三九条码、GS1-128条码的编码长度是非定长的,因此本表以18位为例。②该模式计算校验码时包含起始符和终止符。③该模式计算校验码时只取条码中的数字依次排列,校验码在X 2 位置。④GS1-128条码的权值是从左向右排列,且本体码包含1个起始符和1个FNC1字符。⑤本表仅列出店内条码中含价格或度量值的本体码及其权值,不包括店内条码的其它部分。编码位置及计算权值X 1831211X 1711111X 1631212X 1511113X 143331214X 13111111115X 123333331216X 111111111117X 10333310331218X 911119111119X 83333383312110X 71111171111111X 633333633112112X 5111115111111113X 4333334331112114X 3111113111111115X 233333233112116X 11表2 编码位置及计算权值条码质量44 条码与信息系统 2018年第2期BAR CODE & INFORMATION SYSTEMM — —模数;MOD — —求余函数;ASC — —求编码值的函数。如果编码是数字,编码值即为数字;如果编码是字符,则需要查编码值的字符值对照表;CHR — —求数字对应的编码。不同一维条码校验码的计算公式参见表4。公式1的计算步骤①查ASC( X i ),即每一个本体码 X i 的值。如果 X i 是数字,则 X i 的值是该数字;如果 X i 是其它字符,则需要查该条码结构的字符值对照表。字符值对照表参见表5(见下页)。②计算ASC( X i )· R i ,即每一个本体码X i 的值与权值的积。③计算 ∑i=2n(ASC (X i ) · R i ),即本体码值与权值的积的累加和。④计算 ∑i=2n(ASC (X i ) · R i )+ C ,即累加和与常数的和。仅库巴德条码(模10补码)有 C 常数(奇数位中大于和等于5的字符个数),其它的C常数均为0。表3 除法采用的模数条码结构EAN/UCC-8UCC-12EAN/UCC-13EAN/UCC-1413位中国标准书号10位中国标准书号交插二五条码14位储运包装商品条码店内条码中的4位价格码店内条码中的5位价格码库巴德条码(模16补码)库巴德条码(模10补码)三九条码GS1-128条码10√√√√√√√√√√11√16√43√103√模数表4 校验码的计算公式条码结构EAN/UCC-8UCC-12EAN/UCC-13EAN/UCC-1413位中国标准书号10位中国标准书号交插二五条码14位储运包装商品条码店内条码中的4位价格码店内条码中的5位价格码库巴德条码(模16补码)库巴德条码(模10补码)三九条码GS1-128条码公式1√√√√√√√√√√公式2√公式3√√√45 条码与信息系统 2018年第2期BAR CODE & INFORMATION SYSTEM⑤计算( ∑i=2n(ASC (X i ) · R i )+ C )MOD M ,即总和求余。⑥计算 M -(( ∑i=2n(ASC (X i ) · R i )+C)MOD M ),即模数减余数。⑦根据⑥步计算的最后数值查编码。公式2的计算步骤①②与公式1的相同。③计算 ∑i=3n(ASC (X i ) · R i )+ASC( X 1 )· R 1 ,即除 X 2 以外的其它编码值与权值的累加和。④计算( ∑i=3n(ASC (X i ) · R i )+ASC( X 1 )· R 1 )MOD M ,即总和求余。⑤计算 M -(( ∑i=3n(ASC (X i ) · R i )+ASC( X 1 ) · R 1 )MOD M ),即模数减余数。⑥根据⑤步计算的最后数值查编码。公式3的计算步骤①②③与公式1相同。④计算( ∑i=2n(ASC (X i ) · R i ))MOD M ,即总和求余。⑤根据④步计算的最后数值查编码。公式1的简化EAN/UCC-8、UCC-12、EAN/UCC-13、EAN/UCC-14、13位中国标准书号、交插二五条码、14位储运包装商品条码等7种一维条码有以下特性:偶数位的权值为3或2,奇数位的权值为1;本体码为数字;最后的计算结果不需查字符值对照表;计算总和后,都不用再加常数。因此,公式1可以简化为:公式4:X 1) = M - (( ∑i=2n(X 2(i-1) · R 2(i-1) )+ ∑i=2n(X (2i-1) ))MOD M )公式4的计算步骤是:①计算 ∑i=2n(X 2(i-1) · R 2(i-1) ),即偶数位与固定权值(3或2)的积的和,也可以是偶数位之和与固定权值的积,两种计算的结果是相同的。②计算 ∑i=2n(X (2i-1) ) ,即奇数位的和。③计算( ∑i=2n(X 2(i-1) · R 2(i-1) )+ ∑i=2n(X (2i-1) ))MOD M ,即总和求余。该计算方式等价于,用大于或等于总和结果且为10的整数倍的最小数减去①和②的和。④计算 M - (( ∑i=2n(X 2(i-1) · R 2(i-1) )+ ∑i=2n(X (2i-1) ))MOD M ),即模数减去③的结果。