IMEI 码由15位数字组成,其中第15位(IME15)是检验位,是通过将前14(IMEI14)运算得出的,
计算公式公式如下:
IMEI15= 绝对值( (iSum+eSum) 除以10的余数 - 10 );
IMEI14:从左到右分别为第1,2,3~14位。第14位为奇数位,第13位为偶数位
其中,eSum = 7位偶数累加
iSum = 7位奇数位2除以10的整数 累加 + 奇数位2除以10的余数累加
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)将奇数位数字相加(从1开始计数)*/
if (i%2==0) {
sum1 = sum1 + num;
}else{
/*(2)将偶数位数字分别乘以2,分别计算个位数和十位数之和(从1开始计数)*/
int temp = num * 2 ;
if (temp < 10) {
sum2=sum2+temp;
}else{
sum2 = sum2 + temp + 1 -10;
}
}
}
int total = sum1+sum2;
/*如果得出的数个位是0则校验位为0,否则为10减去个位数 */
String resultStr;
if (total % 10 ==0) {
resultStr=data+"0";
}else{
resultStr=data+ (10 - (total %10))+"";
}
System.err.println(resultStr);
}
}