C# 校验车架号(VIN码)第9位是否有效算法
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位是否有效算法的更多相关文章
- 车牌,车架号,VIN码毫秒识别技术,汽车后市场的春天到来了
vin码(车架号)识别运用 不仅在制造.销售.保养.保险.车辆评估.交易环节会需要录入汽车的VIN码,在交通事故处理中,作为汽车身份唯一识别码,VIN码是处理事故的执法人员必须要记录的信息之一.随着汽 ...
- 车架号VIN码识别,合格证,购车发票,房产证,车牌,驾驶证,行驶证,征信报告等等识别 从易鑫、大搜车、淘车网,看汽车金融发展新模式
随着我国汽车保有量和产销量的持续增长,汽车技术的日趋成熟,以及互联网+对汽车行业的不断影响,汽车金融的市场规模逐步扩大,市场主体逐步丰富,汽车金融模式也在不断演进. 2016年左右,美国主要汽车厂商通 ...
- VIN码/车架号的详解,车架号识别,VIN码识别,OCR车架号识别能带来什么
各位车主在车检时不知道有没有注意到一件事,就是工作人员会打开车前盖在前围钢板上拓一张条码.下面来给大家介绍一下,这张条码就是VIN号,俗称钢印号,就像我们每个人都有自己的身份证号码一样,这也是汽车界的 ...
- VIN码识别,车架号识别,OCR扫描工具
近年二手车交易市场火爆,对二手车估值需要了详细解二手车的历史状况,车架号(VIN码)是车辆唯一的身份标识,也是了解二手车车况的入口,车商和二手车平台会频繁的进行车况查询,VIN码扫描识别技术给车辆估值 ...
- VIN码识别:毫秒间99%精准识别
科技改变生活.几年前,人工智能还仅是一个噱头,现在已逐渐融入我们的工作和生活,代替了一些重复性的.繁杂的人工劳动,在提高工作效率的同时,提升了客户体验. 车架号也叫VIN码,由17位数字和字母混合组成 ...
- 汽车VIN码,车架号,移动端,服务器端OCR识别 技术公司
很多人在购买车辆的时候,只关注性能.外观.内饰等,其实真正的内行是首先看车辆的VIN码,也叫车架号码. VIN码(车架号码)是一辆车的唯一身份证明,一般在车辆的挡风玻璃处,有的在车辆防火墙上,或B柱铭 ...
- 我的天哪,现在的移动VIN码识别已经这么。。
VIN码是英文(Vehicle Identification Number)的缩写,译为车辆识别代码,又称车辆识别码,车辆识别代码,车辆识别号,车辆识别代号,VIN码是表明车辆身份的代码.VIN码由1 ...
- 为什么说汽车VIN码是汽车唯一的"身份证"
人有身份证,那么车有吗?当然了,汽车也是有"身份证"的,出厂时就会跟着车辆一起出生, 一般在车辆的挡风玻璃处.按照国际SAE国际规定,Vin码由17位字符组成,其中包含了车辆的生产 ...
- 汽车VIN码识别/汽车车架号OCR识别,移动端VIN码识别,OCR扫描工具
本文推荐了一项汽车VIN码自动识别技术,用户通过手机“扫一扫”的简单操作,就可以快速识别VIN码,查询到车辆的详细信息,为汽修汽配.二手车交易.车辆监管.查勘理赔提高工作效率. VIN是英文Vehic ...
随机推荐
- [maven]scope之test
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit ...
- 阶段5 3.微服务项目【学成在线】_day03 CMS页面管理开发_09-修改页面-服务端-接口开发
需要写两个接口 api的接口内定义两个方法.修改的地方单独传了id @ApiOperation("根据页面id查询页面信息") public CmsPage findById(St ...
- linux简单命令8---用户登录查看命令
---------------------------------------------------------------------------------------------------- ...
- 如何屏蔽掉烦人的www.google-analytics.com
有时候在开发的网站项目中会加载谷歌分析的js,并且加载的非常慢导致浏览器一直在转圈圈. 按下面的方法可屏蔽掉烦人的www.google-analytics.com 现在想只有屏蔽掉google-a ...
- 1-3 RHEL7操作系统的安装
RHEL7操作系统的安装 本节所讲内容: q RHEL7.2操作系统的安装 第1章 RHEL7系统安装 1.1 安装软件准备: 需要的软件如下: Vmware workstation 12(含注册码 ...
- JAVA数据结构和算法 6 递归
递归:直接或者间接地调用自己.比如计算连续数的阶乘,计算规律:n!=(n-1)!*n. 每个递归方法都有一个基值(终止)条件,以防止无线地递归下去,以及由此引发的程序崩溃. 采用递归是因为它可以从概念 ...
- Matlab求微分方程的符号解1
一.常微分方程的求解 例1. 例2. 例3. 通常我们使用syms 和dsolve来求解: first: second:表示 third:如果有必要 功能函数diff可以完成一元或多元函数任意阶数的微 ...
- 【计算机】DMA原理2
DMA (直接存储器访问) DMA(Direct Memory Access,直接内存存取) 是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于 CPU 的大量中断负载.否则,C ...
- flask核心对象
appcontext 上下文 处理
- Springboot 使用Jwt token失效时接口无响应(乌龙)
问题背景:新项目使用Springboot框架,鉴权使用了Jwt 处理cors: @Configuration public class WebMvcConfig implements WebMvcCo ...