前段时间做的项目中,有关于汽车VIN码生成的处理,将上线的车辆生成各自的VIN码。由于VIN码的唯一性,当时做的也很谨慎,下来分享下VIN码的知识。
先说下VIN码,又称VINNO,是每一辆汽车唯一的ID号,算是身份证了。一般这个VIN码都在汽车的仪表板左侧,前挡风玻璃左下方。你站在汽车驾驶室门的侧前方就能看到。VIN是英文Vehicle Identification Number(车辆识别码)的缩写。VIN码由17位字符组成,所以俗称十七位码。它包含了车辆的生产厂家、年代、车型、车身型式及代码、发动机代码及组装地点等信息。
看个图片先:
简要说下VIN码的构成,详细参考度娘吧。http://baike.baidu.com/view/664596.htm
1~3位(WMI):制造厂、品牌和类型;
第1位:生产国家代码。中国是L。
第2位:汽车制造商代码
第3位:汽车类型代码
4~8位(VDS):车辆特征:
比如种类、系列、车身类型、发动机类型及约束系统类型等等
第9位:校验位:
在该位置填入1个用来表示车辆识别代号(VIN)书写准确性的“检验数字”(1个数字或1个字母”X”)。其目的是核对数字,检验VIN填写是否正确,并能防止假冒产品。它是其他16位字码对应数值乘以其所位置权数的和除以11所得的余数,当余数为0-9时,余数就是检验数字;当余数为10时,使用字母”X”作为检验数字。
这个在我们做项目时,生产VIN码必须特别注意的,哈哈。
第10位:车型年款
第11位:装配厂
12~17位:顺序号
相当于车间生产线上车辆的车架号,类似于车辆生产的顺序号。
特别注意:VIN中不会包含 I、O、Q 三个英文字母
下面特别说下第9位:校验位的生成方法:
1、除了第9位,剩下的16位都是数字和字母,字母又没有I、O、Q
计算校验位需要把字母转化成数字,他们的转换关系看下图:
2、VIN码中每一位都有一个加权系数,参考下表:
特别注意第9位因是校验位,它不存在加权。
3、开始计算:
将检验位(第9位)之外的16位每一位的数值乘以加权系数,再将各乘积相加,求得的和除以11,所得的余数就是检验位的数值。如果余数为10,则检验位为字母“X”。
这里的“每一位的数值“,当此位上是数字时,那么就用该数字乘以加权系数,如果此位是字母,就按照上面图示的字母对应的数值来乘以加权系数。
以上就能算出校验位,加上剩余16位,整合成一个17位的VIN码。
下面来个实例。拿一个丰田花冠车实际的VIN码:LFMAP22C8C0448426
第9位是8,也就是校验位的数值是8。咱来“验证“一下。
首先除校验位之外的16位的数值乘以加权系数:
第一位L:3*8=24
第二位F:6*7=42
第三位M:4*6=24
第四位A:1*5=5
第五位P:7*4=28
第六位2:2*3=6
第七位2:2*2=4
第八位C:3*10=30
第九位:略过
第十位C:3*9=27
第十一位0:0*8=0
第十二位4:4*7=28
第十三位4:4*6=24
第十四位8:8*5=40
第十五位4:4*4=16
第十六位2:2*3=6
第十七位6:6*2=12
将上述数值相加,得到:316
将316除以11得到28余数是8,所以校验位是8。
关于汽车的VIN码,就介绍这些吧,回头弄一个校验VIN码的小程序分享给大家。