车型vin码判断

来源:互联网 发布:网站关键词优化软件 编辑:程序博客网 时间:2024/04/27 15:30

IN码各位数字的“对应值”:

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



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




 static byte[] VINMAPVALUE = new byte[512];static {VINMAPVALUE[1] = 8;VINMAPVALUE[2] = 7;VINMAPVALUE[3] = 6;VINMAPVALUE[4] = 5;VINMAPVALUE[5] = 4;VINMAPVALUE[6] = 3;VINMAPVALUE[7] = 2;VINMAPVALUE[8] = 10;VINMAPVALUE[9] = 0;VINMAPVALUE[10] = 9;VINMAPVALUE[11] = 8;VINMAPVALUE[12] = 7;VINMAPVALUE[13] = 6;VINMAPVALUE[14] = 5;VINMAPVALUE[15] = 4;VINMAPVALUE[16] = 3;VINMAPVALUE[17] = 2;for (int x = 0; x < 10; x++) {byte b = Integer.toString(x).getBytes()[0];VINMAPVALUE[b] = (byte) x;}for (int x = 'A'; x <= 'Z'; x++) {int tempX = x;if (tempX >= 'S') {tempX += 1;}byte t = (byte) (tempX - 64);while (t > 9) {t = (byte) (t - 9);}VINMAPVALUE[x] = t;}}public static boolean checkVIN(String vin) {boolean reultFlag = false;String uppervin = vin.toUpperCase() ; if (vin == null || uppervin.indexOf("O") >= 0 || uppervin.indexOf("I") >= 0) {reultFlag = false;} else {if (vin.length() == 17) {byte[] vinArr = uppervin.getBytes();int amount = 0;for (int i = 0; i < vinArr.length; i++) {amount += VINMAPVALUE[vinArr[i]] * VINMAPWEIGHTING[i + 1];}int residue = amount % 11;if (residue == 10 && vinArr[8] == 'X') {reultFlag = true;} else if (residue == VINMAPVALUE[vinArr[8]]) {reultFlag = true;}}if (!vin.equals("") && vin.length() != 17) {reultFlag = false;}}return reultFlag;}


0 0
原创粉丝点击