delphi MEID校验码算法


本文整理自网络,侵删。

 

EID校验码算法: 
(1).将偶数位数字分别乘以2,分别计算个位数和十位数之和,注意是16进制数 
(2).将奇数位数字相加,再加上上一步算得的值 
(3).如果得出的数个位是0则校验位为0,否则为10(这里的10是16进制,,即十进制的16)减去个位数 
如:AF 01 23 45 0A BC DE 偶数位乘以2得到F*2=1E 1*2=02 3*2=06 5*2=0A A*2=14 C*2=1C E*2=1C,计算奇数位数字之和和偶数位个位十位之和,得到 A+(1+E)+0+2+2+6+4+A+0+(1+4)+B+(1+8)+D+(1+C)=64 => 校验位 16-4

 

function TForm1.MeidTail(MEIDStr: string): string;var  DEC_Total,DEC_ch,i:integer;  ch,Hex_oushu,Hex_Total,MEIDT:string;begin//'输入MEID前14位,返回MEID第15位,如果返回空值,表示程序出错  If Length(MEIDStr) <> 14 Then  begin    showmessage('MEID越界!');    ExitProcess(0);    Application.Terminate;  end  else  begin    MEIDStr:=UpperCase(MEIDStr);    DEC_Total:=0;    for i:=1 to 14 do   // '计算MEID校验位    begin      ch:= '$'+copy(MEIDStr,i,1);      if(i mod 2<>0) then //将奇数位数字相加      begin        DEC_ch:=StrToInt(ch); //奇数位数字+$变为16进制,再转换为十进制      end      else      begin    //将偶数位数字分别乘以2,分别计算个位数和十位数之和,注意是16进制数        Hex_oushu:=inttohex((StrToInt(ch)*2),2);        DEC_ch:= StrToInt('$'+Hex_oushu[1])+ StrToInt('$'+Hex_oushu[2]);      end;      DEC_Total:= DEC_Total + DEC_ch;    end;    Hex_Total:=inttohex(DEC_Total,2);    If Hex_Total[1]= '0' Then    begin      MEIDT:= '0';    end    Else    begin      MEIDT:=inttohex((16-StrToInt('$'+Hex_Total[2])),1);    End;    Result:=MEIDT;  end;end;

相关阅读 >>

Delphi ttabcontrol控件使用

Delphi 从数组中任取一个

Delphi - 右滚动文字

Delphi使用tnethttpclient:重定向后如何给出最终的url?

Delphi 隐藏任务栏程序,取消自动对齐和网格对齐

Delphi 关闭xp保护 替换explorer.exe

Delphi 判断文本文件的编码格式

format、formatdatetime、formatfloat 的用法

Delphi 中使长循环有响应

Delphi 利用thttpclient实现http异步下载

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...

    正在狠努力加载,请稍候...