public static bool checkVIN(string vin)
{
//VIN码从第1位到第17位的“加权值”:
Dictionary<int, int> vinMapWeighting = new Dictionary<int, int>();
vinMapWeighting.Add(, );
vinMapWeighting.Add(, );
vinMapWeighting.Add(, );
vinMapWeighting.Add(, );
vinMapWeighting.Add(, );
vinMapWeighting.Add(, );
vinMapWeighting.Add(, );
vinMapWeighting.Add(, );
vinMapWeighting.Add(, );
vinMapWeighting.Add(, );
vinMapWeighting.Add(, );
vinMapWeighting.Add(, );
vinMapWeighting.Add(, );
vinMapWeighting.Add(, );
vinMapWeighting.Add(, );
vinMapWeighting.Add(, );
vinMapWeighting.Add(, );
//VIN码各位数字的“对应值”
Dictionary<string, int> vinMapValue = new Dictionary<string, int>();
vinMapValue.Add("", );
vinMapValue.Add("", );
vinMapValue.Add("", );
vinMapValue.Add("", );
vinMapValue.Add("", );
vinMapValue.Add("", );
vinMapValue.Add("", );
vinMapValue.Add("", );
vinMapValue.Add("", );
vinMapValue.Add("", );
vinMapValue.Add("A", );
vinMapValue.Add("B", );
vinMapValue.Add("C", );
vinMapValue.Add("D", );
vinMapValue.Add("E", );
vinMapValue.Add("F", );
vinMapValue.Add("G", );
vinMapValue.Add("H", );
vinMapValue.Add("J", );
vinMapValue.Add("K", );
vinMapValue.Add("M", );
vinMapValue.Add("L", );
vinMapValue.Add("N", );
vinMapValue.Add("P", );
vinMapValue.Add("R", );
vinMapValue.Add("S", );
vinMapValue.Add("T", );
vinMapValue.Add("U", );
vinMapValue.Add("V", );
vinMapValue.Add("W", );
vinMapValue.Add("X", );
vinMapValue.Add("Y", );
vinMapValue.Add("Z", );
bool reultFlag = false;
string uppervin = vin.ToLower();
//排除字母O、I
if (vin == null || uppervin.IndexOf("O") >= || uppervin.IndexOf("I") >= )
{
reultFlag = false;
}
else
{
//1:长度为17
if (vin.Length == )
{
int len = uppervin.Length;
string[] vinArr = new string[len];
for (int i = ; i < len; i++)
{
vinArr[i] = uppervin.Substring(i, );
}
int amount = ;
for (int i = ; i < vinArr.Length; i++)
{
//VIN码从从第一位开始,码数字的对应值×该位的加权值,计算全部17位的乘积值相加
if (vinMapValue.ContainsKey(vinArr[i].ToUpper()))
amount += vinMapValue[vinArr[i].ToUpper()] * vinMapWeighting[i + ];
}
//乘积值相加除以11、若余数为10,即为字母X
if (amount % == )
{
if (vinArr[].ToUpper() == "X")
{
reultFlag = true;
}
else
{
reultFlag = false;
}
}
else
{
//VIN码从从第一位开始,码数字的对应值×该位的加权值,计算全部17位的乘积值相加除以11,所得的余数,即为第九位校验值
if (vinMapValue.ContainsKey(vinArr[].ToUpper()))
{
if (amount % != vinMapValue[vinArr[].ToUpper()])
{
reultFlag = false;
}
else
{
reultFlag = true;
}
}
}
}
//1:长度不为17
if (!vin.Equals("") && vin.Length != )
{
reultFlag = false;
}
}
return reultFlag;
}

C# 校验车架号(VIN码)第9位是否有效算法的更多相关文章

  1. 车牌,车架号,VIN码毫秒识别技术,汽车后市场的春天到来了

    vin码(车架号)识别运用 不仅在制造.销售.保养.保险.车辆评估.交易环节会需要录入汽车的VIN码,在交通事故处理中,作为汽车身份唯一识别码,VIN码是处理事故的执法人员必须要记录的信息之一.随着汽 ...

  2. 车架号VIN码识别,合格证,购车发票,房产证,车牌,驾驶证,行驶证,征信报告等等识别 从易鑫、大搜车、淘车网,看汽车金融发展新模式

    随着我国汽车保有量和产销量的持续增长,汽车技术的日趋成熟,以及互联网+对汽车行业的不断影响,汽车金融的市场规模逐步扩大,市场主体逐步丰富,汽车金融模式也在不断演进. 2016年左右,美国主要汽车厂商通 ...

  3. VIN码/车架号的详解,车架号识别,VIN码识别,OCR车架号识别能带来什么

    各位车主在车检时不知道有没有注意到一件事,就是工作人员会打开车前盖在前围钢板上拓一张条码.下面来给大家介绍一下,这张条码就是VIN号,俗称钢印号,就像我们每个人都有自己的身份证号码一样,这也是汽车界的 ...

  4. VIN码识别,车架号识别,OCR扫描工具

    近年二手车交易市场火爆,对二手车估值需要了详细解二手车的历史状况,车架号(VIN码)是车辆唯一的身份标识,也是了解二手车车况的入口,车商和二手车平台会频繁的进行车况查询,VIN码扫描识别技术给车辆估值 ...

  5. VIN码识别:毫秒间99%精准识别

    科技改变生活.几年前,人工智能还仅是一个噱头,现在已逐渐融入我们的工作和生活,代替了一些重复性的.繁杂的人工劳动,在提高工作效率的同时,提升了客户体验. 车架号也叫VIN码,由17位数字和字母混合组成 ...

  6. 汽车VIN码,车架号,移动端,服务器端OCR识别 技术公司

    很多人在购买车辆的时候,只关注性能.外观.内饰等,其实真正的内行是首先看车辆的VIN码,也叫车架号码. VIN码(车架号码)是一辆车的唯一身份证明,一般在车辆的挡风玻璃处,有的在车辆防火墙上,或B柱铭 ...

  7. 我的天哪,现在的移动VIN码识别已经这么。。

    VIN码是英文(Vehicle Identification Number)的缩写,译为车辆识别代码,又称车辆识别码,车辆识别代码,车辆识别号,车辆识别代号,VIN码是表明车辆身份的代码.VIN码由1 ...

  8. 为什么说汽车VIN码是汽车唯一的"身份证"

    人有身份证,那么车有吗?当然了,汽车也是有"身份证"的,出厂时就会跟着车辆一起出生, 一般在车辆的挡风玻璃处.按照国际SAE国际规定,Vin码由17位字符组成,其中包含了车辆的生产 ...

  9. 汽车VIN码识别/汽车车架号OCR识别,移动端VIN码识别,OCR扫描工具

    本文推荐了一项汽车VIN码自动识别技术,用户通过手机“扫一扫”的简单操作,就可以快速识别VIN码,查询到车辆的详细信息,为汽修汽配.二手车交易.车辆监管.查勘理赔提高工作效率. VIN是英文Vehic ...

随机推荐

  1. SQL-W3School-高级:SQL 撤销索引、表以及数据库

    ylbtech-SQL-W3School-高级:SQL 撤销索引.表以及数据库 1.返回顶部 1. 通过使用 DROP 语句,可以轻松地删除索引.表和数据库. SQL DROP INDEX 语句 我们 ...

  2. C++ STL 已序区间查找算法

    #include <iostream>#include <algorithm>#include <list>#include <functional># ...

  3. osgViewer应用基础

    #ifdef _WIN32#include <windows.h>#endif#include <osgViewer/Viewer>#include <osgDB/Rea ...

  4. python如何发布自已pip项目

    python如何发布自已pip项目前言因为自已平时会把一个常用到逻辑写成一个工具python脚本,像关于时间字符串处理,像关于路径和文件夹遍历什么的工具.每一次新建一个项目的时候都要把这些工具程序复制 ...

  5. Flutter dio伪造请求头获取数据

    在很多时候,后端为了安全都会有一些请求头的限制,只有请求头对了,才能正确返回数据.这虽然限制了一些人恶意请求数据,但是对于我们聪明的程序员来说,就是形同虚设.下面就以极客时间为例,讲一下通过伪造请求头 ...

  6. 退出virtual box 独占键盘和鼠标

    先按住右边的Alt键,然后按一下(右边)ctrl键

  7. ADRMS与office的整合(一)

    因为微软之前针对客户的RMS加密服务是一种免费的测试服务,虽然用户很多但实质上还是一种“测试服务”. 后来微软把这个服务商业化了,需要继续使用的话需要打下这个补丁 https://support.mi ...

  8. ue-cli3 取消eslint校验代码

    参考链接:https://www.cnblogs.com/sjie/p/9884362.html

  9. windows远程重启

    用管理员权限打开win+r,输入cmd后: net use \ip地址 "管理员密码" /user:administrator shutdown /r /t 0 /m ip地址 即 ...

  10. DS博客作业--07查找

    目录 DS博客作业--07查找 1.本周学习总结(0--2分) 1.思维导图 2.谈谈你对查找运算的认识及学习体会. 2.PTA实验作业(6分) 2.1.题目1:6-1 二叉搜索树的操作集 (30 分 ...