zoukankan      html  css  js  c++  java
  • delphi crc校验函数

    function CalCRC16(AData: array of Byte; AStart, AEnd: Integer): string;
    const
      GENP=$8408;  //多项式公式X16+X15+X2+1(1100 0000 0000 0101)  //$A001
    var
      crc:Word;
      i:Integer;
      tmp:Byte;
      s:string;
    procedure CalOneByte(AByte:Byte);  //计算1个字节的校验码
    var
    j:Integer;
    begin
      crc:=crc xor AByte;   //将数据与CRC寄存器的低8位进行异或
      for j:=0 to 7 do      //对每一位进行校验
      begin
        tmp:=crc and 1;        //取出最低位
        crc:=crc shr 1;        //寄存器向右移一位
        crc:=crc and $7FFF;    //将最高位置0
        if tmp=1 then         //检测移出的位,如果为1,那么与多项式异或
          crc:=crc xor GENP;
          crc:=crc and $FFFF;
      end;
    end;
    begin
      crc:=$FFFF;             //将余数设定为FFFF
      for i:=AStart to AEnd do   //对每一个字节进行校验
        CalOneByte(AData[i]);
      s:=inttohex(crc,2);
      Result:= rightstr(s,2)+leftstr(s,2);
    end;

    转换函数


    function TForm1.strtocrc(s: string): string;
    var
      buf1:array[0..256] of byte;
      i:integer;
      strOrder:string;
      Res: string;
    begin
      strOrder :=StringReplace(s,' ','',[rfReplaceAll]);
      for i:=0 to (length(strOrder) div 2-1) do
        buf1[i]:= HexToInt1(copy(strOrder, i*2 + 1,2));
      result:=s+CalCRC16(buf1,Low(buf1),length(strOrder) div 2-1);
    end;

  • 相关阅读:
    ssh 配置
    c指针
    centos 配置
    mac terminal 配色
    【webrtc】coturn服务搭建(27)
    【webrtc】SDP(26)
    【webrtc】webrtc通过peerconnection进行音视频互通(25)
    【webrtc】媒体协商的过程(24)
    【webrtc】STUN协议(23)
    【webrtc】webrtc网络传输基本知识(22)
  • 原文地址:https://www.cnblogs.com/zhangzhifeng/p/5577553.html
Copyright © 2011-2022 走看看