我们生活中遇到的编码,如:商品编码,图书编号,银行卡号、身份证号,都是符合一定的规则的。
1、商品编码:6 958804 520047,13位,由4部分构成,其中695是国家代码(中国是690-699),880452是厂商代码(4-6位不等),004为商品代码(3-5位不等,厂商自定义),最后一位的7是校验码。
校验位的计算规则是:
[10 – (编码中从右算起奇数位数字(不含校验码)之和 x 1 + 偶数位数字之和 x 3) mod 10] mod 10
其中:mod是取模运算符,a mod b的结果是a除以b的余数。
以上面的编码为例:

奇数位数字(不含校验码)之和=6+5+8+4+2+0=25
偶数位数字之和=9+8+0+5+0+4=26
25+26 x 3 = 103
103 mod 10 = 3
10 – 3 = 7
7 mod 10 = 7
即校验位为7。
2、图书编码:ISBN 978-7-111-34394-3,13位,由4部分构成,其中978为ISBN专用前缀码,7是语言代码,111是出版社代码,34394是图书代码,3是校验码。
图书编码和商品编码均为EAN-13码,因此校验位的算法也相同:
以上面的编码为例:

奇数位数字(不含校验码)之和=9+8+1+1+4+9=32
偶数位数字之和=7+7+1+3+3+4=25
32+25 x 3 = 107
107 mod 10 = 7
10 – 7 = 3
3 mod 10 = 3
即校验位为3
3、银行卡号:6259 6508 7177 2098,最后一位是校验码。
银行卡号校验码采用luhn算法,亦称模10算法。计算方法如下:
第一步:从卡号右边起奇数位上的各位数字(不含校验码)相加;
第二步:偶数位上数字分别乘以2(如果乘积为两位数,则将其减去9),然后相加;
第三步:先将第一步和第二步所得数字相加后取10的模,然后求用10减去模的差,即为校验码(如果模为0则该校验码为0)。
以上面的编码为例:
第一步:2+9+5+8+1+7+0=32
第二步:6*2=12 12-9=3, 5*2=10 10-9=1,
6*2=12 12-9=3, 0*2=0,
7*2=14 14-9=5, 7*2=14 14-9=5,
2*2=4,9*2=18 18-9=9,
3+1+3+0+5+5+4+9=30
第三步:32+30=62, 62 mod 10 = 2, 10-2=8
所以,校验码是8。
4、身份证号110101202001018118,从左边起,前6位为行政区划代码,第7-14位是出生年月日,第15-16位是派出所代码,第17位是性别代码(奇数为男性,偶数为女性),第18位是校验位。
校验码的计算方法如下:
1)将身份证号码第1-17位数分别乘以不同的系数。
从第1位到第17位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。
2)将第1-17位数字和系数相乘的结果相加。
3)用和除以11,看余数是多少?
4)余数只可能是0-1-2-3-4-5-6-7-8-9-10这11个数字,其分别对应的校验码为1-0-X-9-8-7-6-5-4-3-2。
以上面的身份证号为例:

第1-17位上的数字乘以系数后相加的和为125
125 mod 11 = 4
4对应的校验码为:8
如若转载,请注明出处:https://www.dianshang6.com/32721.html