主页 > 编程资料 > Delphi >
发布时间:2015-09-22 作者:网络 阅读:276次

IMEI校验码算法:
(1).将偶数位数字分别乘以2,分别计算个位数和十位数之和
(2).将奇数位数字相加,再加上上一步算得的值
(3).如果得出的数个位是0则校验位为0,否则为10减去个位数
如:35 89 01 80 69 72 41 偶数位乘以2得到5*2=10 9*2=18 1*2=02 0*2=00 9*2=18 2*2=04 1*2=02,计算奇数位数字之和和偶数位个位十位之和,得到 3+(1+0)+8+(1+8)+0+(0+2)+8+(0+0)+6+(1+8)+7+(0+4)+4+(0+2)=63 => 校验位 10-3 = 7

 

Function TForm1.ImeiTail(ImeiIn:string;var ImeiT:string):Integer;var  iTemp1,iTemp2,i:integer;begin//'输入IMEI前14位,返回IMEI第15位,如果返回空值,表示程序出错  If Length(ImeiIn) <> 14 Then  begin    showmessage('Imei越界!');    ExitProcess(0);    Application.Terminate;  end  else  begin    iTemp1:=0;    for i:=1 to 14 do   // '计算IMEI校验位    begin      if(i mod 2<>0) then      begin        iTemp2:=strToInt(Midstr(ImeiIn, i, 1));      end      else      begin        iTemp2:= strToInt(Midstr(ImeiIn, i, 1)) * 2;        If (iTemp2 >= 10) Then        begin          iTemp2 := 1 + (iTemp2 Mod 10);        end;      end;      iTemp1:= iTemp1 + iTemp2;    end;    If (iTemp1 Mod 10)= 0 Then    begin      ImeiT:= '0';    end    Else    begin      ImeiT:= IntToStr(10 - (iTemp1 Mod 10));    End;  end;end;

 

 


关键字词: