車輛VIN碼的校驗演算法
一、關於車輛的VIN碼介紹: 直接百度
二、VIN碼的校驗位是第九位,對於第九位的計算方法如下:
2.1 內容的權值:VIN碼各位數字的“對應值”:
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
|||||||||||||
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
|||||||||||||
A |
B |
C |
D |
E |
F |
G |
H |
J |
K |
L |
M |
N |
P |
R |
S |
T |
U |
V |
W |
X |
Y |
Z |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
1 |
2 |
3 |
4 |
5 |
7 |
9 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
2.2 位置的權值: VIN碼從第1位到第17位的“加權值”:
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 |
0 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
VIN碼從從第一位開始,碼數字的對應值×該位的加權值,計算全部17位的乘積值相加除以11,所得的餘數,即為第九位校驗值
例子:車輛識別碼:UU6JA69691D713820第九位為9為校驗碼,我們可以驗證下是否正確。
4×8+4×7+6×6+1×5+1×4+6×3+9×2+6×10+1×9+4×8+7×7+1×6+3×5+8×4+2×3+0×0 = 350
350除以11,得31,餘9,該餘數9即為校驗碼,和識別碼的校驗位相同。如果餘數為10,則檢驗位為字母“X”
-----------------------------------我是分割線---------------------------------------
#include "stdio.h"
#define GD_OK 1
#define GD_ERR -1
int VinCalc(char *Vin,char *reslt)
{
unsigned int i = 0;
unsigned int sum =0;
unsigned int check = 0;
char temp=0;
unsigned int j = 0;
char jianquan[26][2] = {
{'A',1},{'B',2},{'C',3},{'D',4},{'E',5},{'F',6},
{'G',7},{'H',8},{'I',0},{'J',1},{'K',2},{'L',3},
{'M',4},{'N',5},{'O',0},{'P',7},{'Q',8},{'R',9},
{'S',2},{'T',3},{'U',4},{'V',5},{'W',6},{'X',7},
{'Y',8},{'Z',9}};
char pos[17]={8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2};
for(i=0;i<17;i++)
{
if(Vin[i]>='a'&&Vin[i]<='z')
{
temp = Vin[i]-0x20;
}
else if((Vin[i]>='A')&&(Vin[i]<='Z'))
{
temp = Vin[i];
}
else if((Vin[i]>='0')&&(Vin[i]<='9'))temp = Vin[i]-'0';
else return GD_ERR;
if((temp>='A')&&(temp<='Z'))
{
for(j=0;j<26;j++)
{
if(temp == jianquan[j][0])
temp = jianquan[j][1];
}
}
check += temp*pos[i];
}
*reslt = check%11;
return GD_OK;
}
void main(void)
{
char check = 0;
char* Vin="UU6JA69691D713820";
VinCalc(Vin,&check);
printf("校驗位是:%d",check);
}
相關推薦
車輛VIN碼的校驗演算法
一、關於車輛的VIN碼介紹: 直接百度 二、VIN碼的校驗位是第九位,對於第九位的計算方法如下: 2.1 內容的權值:VIN碼各位數字的“對應值”: 0 1 2 3 4 5 6 7 8 9
計算機網路二進位制反碼求和校驗演算法
原文連結:http://blog.chinaunix.net/uid-26758209-id-3146230.html 校驗和演算法 經常看計算機網路相關的書時,每次看到關於IP或者是UDP報頭校驗和時,都是一笑而過,以為相當簡單的東西,不就是16bit資料的相
python登錄加隨機驗證碼校驗程序(裝飾器內置函數的理解)
python 裝飾器 內置函數 登錄驗證 驗證碼使用說明:為了防止惡意攻擊,同時不對原先用戶登錄驗證的方法代碼進行改動,在檢驗賬號密碼方法外再套一層校驗方法(驗證碼),過濾非人為的攻擊。代碼如下:#!/usr/bin/env python # -*- coding:utf-8 -*- import os im
解析車輛VIN碼識別(車架號識別)系統
人工 普通 性能 需要 除了 組裝 采集 裝配 幫助 很多人在購買車輛的時候,只關註性能、外觀、內飾等,其實真正的內行是首先看車輛的VIN碼,也叫車架號碼。 VIN碼(車架號碼)是一輛車的唯一身份證明,一般在車輛的擋風玻璃處,有的在車輛防火墻上,或B柱銘牌上。按照國際SAE
關於vue打包是因代碼校驗報錯
formatter lint 全局 for 文件 註釋 spa ons div 單個文件中: 1、/* eslint - disable */ 2、/* eslint-disable no-new */ 當然也支持全局: 3、bulid > webpack.base.
C語言 CRC32校驗演算法
#include <stdio.h> #include <string.h> #include <stdlib.h> typedef signed char s8; typedef unsigned char u8; typedef signed shor
【TP5.1】驗證碼校驗 ---驗證器使用
author:kak wechat:fangkangfk 實現步驟: 在data建立一個Uservaildate的驗證類 寫驗證規則 在登入時對驗證類的呼叫,然後校驗 $userVaildata->check(Request::param())這個
機動車車架號識別 車輛VIN碼識別
汽車Vin碼是汽車在30年內絕對不會重複的一個編碼,汽車vin碼(車架號)作為車輛唯一的身份證,在汽車的管理維護過程中得到了廣泛的應用。Vin碼(車架號碼)是一輛車的唯一身份證明,一般在汽車的擋風玻璃處,有的在汽車防火牆上,或B柱銘牌上。按照國際SAE國際規定,汽車Vin碼(車架號碼)由17
累加和校驗演算法(CheckSum演算法)
因為外界總會對電路存在或多或少的干擾,對於數字訊號,很可能導致傳輸的資料出現千差萬別。對於很多需要傳輸資料的場合,尤其是一些資料可能會影響一些硬體的動作(諸如嵌入式的一些裝置、機器人等),錯誤的資料可能會帶來一些隱性風險,想想都可怕。 由於本人是嵌入式相關領域的,平時玩的都是微控制器,當然微
java實現CRC16 MODBUS校驗演算法
最近做通訊開發,遇到了校驗碼的問題 我在這個網站上試了試 裡面有各種crc16的校驗碼 廢話不多說,直接上程式碼 /** * 計算CRC16校驗碼 * * @param bytes * @return
Java——使用springboot2.0+kaptcha進行驗證碼校驗
pom檔案 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/200
SpringBoot+jquery 登入+驗證碼校驗
展示頁面 首先我貼上前端程式碼 <div class="container"> <div class="col-md-4 location"> <div class="form-signin
CRC校驗演算法及實現 C
標準CRC生成多項式如下表: 名稱 生成多項式 簡記式* 標準引用 CRC-4 x4+x+1 3 ITU G.704 CRC-8 x8+x5+x
Modbus CRC16校驗演算法--查表法(已經過本人測試,工作良好)
程式碼如下: uchar auchCRCHi[]= { 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0
SpringBoot實現簡訊驗證碼校驗
本文歡迎轉載,轉載請註明出處,謝謝~(作者:喝酒不騎馬 Colton_Null) from CSDN 思路 使用者輸入手機號後,點選按鈕獲取驗證碼。並設定冷卻時間,防止使用者頻繁點選。 後臺生成驗證碼併發送到使用者手機上,根據驗證碼、時間及一串自定義祕鑰生
關於CRC校驗演算法及其C程式碼實現
以CRC16作為參考: CRC16常見的標準有以下幾種,被用在各個規範中,其演算法原理基本一致,就是在資料的輸入和輸出有所差異,下邊把這些標準的差異列出,並給出C語言的演算法實現。 CRC16_
Luhn algorithm(附信用卡校驗演算法C語言實現)
From Wikipedia, the free encyclopedia The Luhn algorithm or Luhn formula, also known as the "modulus 10" or "mod 10" algorithm, is a simple checksum formu
Java使用luhn校驗演算法實現銀行卡號合法性校驗&&獲取銀行卡號所屬銀行
Luhn校驗演算法或是Luhn 公式,也被稱作“模10演算法”。它是一種簡單的校驗公式,一般會被用於身份證號碼,IMEI號碼,美國供應商識別號碼, 或是加拿大的社會保險號碼的驗證。該演算法是由IBM的科學家Hans Peter Luhn所創造,於1954年1月6日提出該
SHA1校驗演算法C語言實現
SHA1 安全雜湊演算法:對於長度小於2^64位的訊息(1M = 1024k,1K = 1024位元組,1BYTE = 8bit 可以想象一下2的63次方位可以表示一個多大的資料檔案),SHA1會產生一個160位的訊息摘要。當接收到訊息的時候,這個訊息摘要可以用來驗證資料的
Hex檔案格式及其校驗演算法
hex 檔案記錄格式如下: :AABBBBCCDD......DDEE 其中: 表示行起始標誌AA:表示本條記錄中的資料位元組數BBBB:本條記錄中的資料在儲存區中的起始地址 CC:記錄型別,含義如下: '00' Data