作业二:UPC码校验码的检验:
UPC码只能用来表示0-9的数字。每7个模组表达一个字符,每个模组有空(白色)与条(黑色)两种状态。
UPC-A码用于通用商品,是适用范围最广的一种UPC码。一共有113个模组,每个模组长0.33毫米。左右两个各由9个模组组成的空白。UPC-A码是定长码,只能表示12位数字。从左至右,依次是3个模组(101)的起始码、1位的系统码、5位的左侧数据码、5个模组(01010)的中间码、5位的右侧数据码、检查码、3个模组(101)的终止码。其中,起始码、中间码、终止码的模组长度都要长于数据码。
对应法则:左侧数据码与右侧数据码的数值对应规则并不相同,左侧数据码含有奇
数个模组,右侧数据码含有偶数个。黑色模组对应逻辑值为1,白色则为0。
左侧资料码 右侧资料码
逻辑值 1110010 1100110 1101100 1000010 1011100 1001110 1010000 1000100 1001000 1110100
?
数值 逻辑值 0 1 2 3 4 5 6 7 8 9
0001101 0011001 0010011 0111101 0100011 0110001 0101111 0111011 0110111 0001011
1. 2. 3. 4. 5.
可以看出,左侧数据码是右侧数据码的反码。 检查码:检查码为全部12位数据码最后一位。
UPC使用的是Mod 10 校验位计算法具体如下: 例如:01234567890 将从左第一位开始奇数位相加 0 + 2 + 4 + 6 + 8 + 0 = 20 将步骤1的结果乘以3 20 X 3 = 60
将从左向右的偶数位相加 1 + 3 + 5 +7 + 9 = 25 将步骤2与步骤3的结果相加 60 +25 = 85
将步骤4的个位数取补,结果就是校验位 10 - 5 = 5
如果步骤4的个位数为0,则校验位为0 实际条码为 012345678905