1. 程式人生 > >車輛VIN碼的校驗演算法

車輛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