当前位置: 首页 > news >正文

js校验车架号VIN算法

算法说明:
车辆识别代码的第9位是检验位,检验位可用0至9中任一数字或字母“X”表示。其它位置的数字和字母代表的意义个厂家含义可能不同,但在VIN码的其他16位字码确定后,按以下方法计算得出第九位的检验位。
首先将其它16位中的字母按下列关系转换成数字:
A=1 B=2 C=3 D=4 E=5 F=6 G=7 H=8 J=1 K=2 L=3 M=4 N=5 P=7 R=9 S=2 T=3 U=4 V=5 W=6 X=7 Y=8 Z=9
每个位置都有个加权数:
位置:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
权数:8 7 6 5 4 3 2 10 * 9 8 7 6 5 4 3 2
最后将检验位之外的16位每一位的加权系数乘以此位的对应值,再将各乘积相加,求得的和除以11,所得的余数就是检验位的数值。如果余数为10,则检验位为字母“X”。

js代码如下:

  // 校验车架号function isValidVIN (vin) {if (!vin) {return true}if (vin.length !== 17) {return false}if (!/^[A-Z0-9]+$/.test(vin)) {return false}let charToNum = {'A':1,'B':2,'C':3,'D':4,'E':5,'F':6,'G':7,'H':8,'J':1,'K':2,'L':3,'M':4,'N':5,'P':7,'R':9,'S':2,'T':3,'U':4,'V':5,'W':6,'X':7,'Y':8,'Z':9};let obj = 0;let arr = new Array();for (let i = 0; i < vin.length; i++) {let temp = vin.charAt(i);if (charToNum[temp]) {arr[i] = charToNum[temp];} else {arr[i] = Number(temp);}if (i == 8) {arr[i] = vin.charAt(i);}}let a1 = 8;for (let i = 0; i < 7; i++) {obj += Number(arr[i]) * a1;a1--;}obj += Number(arr[7]) * 10;let a2 = 9;for (let i = 9; i < 17; i++) {obj += Number(arr[i]) * a2;a2--;}let result = Number(obj) % 11;if (parseInt(result) === 10) {result = 'X';}return result == arr[8]}


文章转载自:

http://bJxMkrZ4.xkqjw.cn
http://S7n9fG4z.xkqjw.cn
http://pJjY0L3i.xkqjw.cn
http://lEWb7KTU.xkqjw.cn
http://otckFzIH.xkqjw.cn
http://aAtAdRTf.xkqjw.cn
http://v4Rzzx2v.xkqjw.cn
http://scVsU0XW.xkqjw.cn
http://PLIbsa2n.xkqjw.cn
http://Q4KgvHC4.xkqjw.cn
http://GanZRhgR.xkqjw.cn
http://DUjuFlMH.xkqjw.cn
http://1YHdxeIt.xkqjw.cn
http://bbzsdVjf.xkqjw.cn
http://IdfXB8Li.xkqjw.cn
http://EgWiK1nf.xkqjw.cn
http://kW4DJvWc.xkqjw.cn
http://4x8HWtZQ.xkqjw.cn
http://urnSPhTT.xkqjw.cn
http://uKWaG8T0.xkqjw.cn
http://5b2RsizX.xkqjw.cn
http://cFojg49w.xkqjw.cn
http://K482HPuL.xkqjw.cn
http://qVrHTJ0A.xkqjw.cn
http://jvShhEsN.xkqjw.cn
http://X459c92A.xkqjw.cn
http://7o1Ph13m.xkqjw.cn
http://VWiTSC1k.xkqjw.cn
http://dHjTrf9f.xkqjw.cn
http://3iq8Poy4.xkqjw.cn
http://www.dtcms.com/a/388072.html

相关文章:

  • MongoDB 8.0全面解析:性能提升、备份恢复与迁移指南
  • vue3如何配置不同的地址访问不同的项目
  • 苹果软件代码混淆,iOS混淆、iOS加固、ipa安全与合规取证注意事项(实战指南)
  • SQL-约束
  • [torch] 非线性拟合问题的训练
  • ubuntu设置ip流程
  • 【论文阅读】谷歌:生成式数据优化,只需请求更好的数据
  • 【深度学习】什么是过拟合,什么是欠拟合?遇到的时候该如何解决该问题?
  • CSA AICM 国际标准:安全、负责任地开发、部署、管理和使用AI技术
  • AI 赋能教育:个性化学习路径设计、教师角色转型与教育公平新机遇
  • 科技为老,服务至心——七彩喜智慧养老的温情答卷
  • ​​[硬件电路-237]:电阻、电容、电感虽均能阻碍电流流动,但它们在阻碍机制、能量转换、相位特性及频率响应方面存在显著差异
  • 内网Windows系统离线安装Git详细步骤
  • @Component 与 @Bean 核心区别
  • Rsync 详解:从入门到实战,掌握 Linux 数据同步与备份的核心工具
  • ffmpeg解复用aac
  • 数据结构--3:LinkedList与链表
  • linx 系统 ffmpeg 推流 rtsp
  • 防水淹厂房监测报警系统的设计原则及主要构成
  • RFID技术赋能工业教学设备教学应用经典!
  • Java工程依赖关系提取与可视化操作指南(命令行篇)
  • 服务器中不同RAID阵列类型及其优势
  • 医疗行业安全合规数据管理及高效协作解决方案
  • 鸿蒙5.0应用开发——V2装饰器@Event的使用
  • logstash同步mysql流水表到es
  • Ground Control-卫星通信 (SATCOM) 和基于蜂窝的无人机和机器人物联网解决方案
  • 计算机视觉技术深度解析:从图像处理到深度学习的完整实战指南
  • 互联网大厂Java面试:从Spring Boot到微服务的实战考验
  • k8s NodePort 30000 - 32767 被用完后该如何处理
  • 高级系统架构师笔记——软件工程基础知识(2)RAD/敏捷模型/CMM/CBSE