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 ...
随机推荐
- 免费下载 SetupVPN CRX 3.7.0 for Chrome OR QQ浏览器
免费下载 SetupVPN CRX 3.7.0 for Chrome OR QQ浏览器 Lifetime Free VPN(微劈嗯) 下载setupvpn 3.7.0的crx文件, 打开chrome的 ...
- js传值到后台乱码问题
1.前台js的路径 var addurl1="ldcOrderController.do?goods&orderGoodsExtra="+encodeURI(encodeU ...
- nginx ssl
SSL 私钥/etc/pki/CA/ (umask 077;openssl genrsa -out private/cakey.pem 2048) 自签证书 openssl req -new -x50 ...
- (翻译) Poor misunderstood 'var'
It seems most programmers coming to JavaScript from C, C++, Java, and the like equate the var statem ...
- 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_12-webpack研究-webpack安装
npm默认安装配置的路径配置在nodejs的node_modules目录 j加上 -g 就是全局安装 后面只写webpack默认安装的是最新版本 指定版本号 视频中建议指定版本号进行安装
- Hadoop常用命令介绍
本文主要介绍 Hadoop 常用的命令. test命令 用于检测文件或目录是否存在,判断文件或目录大小. -test -[defsz] <path> : Answer various qu ...
- forge k8s/kubernetes ci/cd 最佳实践
forge的官网是: http://forge.sh forge工具是一个部署工具, 将你的应用自动更新到kubernets集群中, 只需要配置简洁的配置文件和模板即可. 其它的就交给forge, 它 ...
- 【ARTS】01_25_左耳听风-201900429~20190505
ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...
- 准备openstack基础环境
在所有的openstack节点上执行 1.配置阿里yum源 yum -y install wget rm -rf /etc/yum.repos.d/* wget -O /etc/yum.repos.d ...
- Mysql批量插入返回Id错乱(原因分析)
在项目中经常会有如下场景: 往数据库中批量插入一批数据后,需要知道哪些插入成功,哪些插入失败了. 这时候往往会有两种思路,一个是在插入之前判断相同的记录是否存在,过滤掉重复的数据:另外一种就是边插入边 ...