IMEI 碼由15位數(shù)字組成,其中第15位(IME15)是檢驗(yàn)位,是通過將前14(IMEI14)運(yùn)算得出的,
計(jì)算公式公式如下:
IMEI15= 絕對(duì)值( (iSum+eSum) 除以10的余數(shù) - 10 );
IMEI14:從左到右分別為第1,2,3~14位。第14位為奇數(shù)位,第13位為偶數(shù)位
其中,eSum = 7位偶數(shù)累加
iSum = 7位奇數(shù)位2除以10的整數(shù) 累加 + 奇數(shù)位2除以10的余數(shù)累加
static void create(){
//
String tac="861337";
String fac="03";
for(int j=0;j<10;j++){
int snr=491201+j;
String index=String.format("%06d", snr);
String data=tac+fac+index;
int sum1=0;
int sum2=0;
for (int i = 0; i < data.length(); i++) {
int num = data.charAt(i) - '0'; // ascii to num
//System.out.println(num);
/*(1)將奇數(shù)位數(shù)字相加(從1開始計(jì)數(shù))*/
if (i%2==0) {
sum1 = sum1 + num;
}else{
/*(2)將偶數(shù)位數(shù)字分別乘以2,分別計(jì)算個(gè)位數(shù)和十位數(shù)之和(從1開始計(jì)數(shù))*/
int temp = num * 2 ;
if (temp < 10) {
sum2=sum2+temp;
}else{
sum2 = sum2 + temp + 1 -10;
}
}
}
int total = sum1+sum2;
/*如果得出的數(shù)個(gè)位是0則校驗(yàn)位為0,否則為10減去個(gè)位數(shù) */
String resultStr;
if (total % 10 ==0) {
resultStr=data+"0";
}else{
resultStr=data+ (10 - (total %10))+"";
}
System.err.println(resultStr);
}
}