LRC校验码 c,delphi c# 别人现成的

 c:

static unsigned char LRC(auchMsg,usDataLen)
  
  unsigned char *auchMsg ; /* 要进行计算的消息 */
  
  unsigned short usDataLen ; /* LRC 要处理的字节的数量*/
  
  { unsigned char uchLRC = 0 ; /* LRC 字节初始化 */
  
  while (usDataLen--) /* 传送消息 */ 
  
  uchLRC += *auchMsg++ ; /* 累加*/ 
  
  return ((unsigned char)(-((char_uchLRC))) ;
  
  }

 

2:Delphi(Pascal) code

function GetLRC(AData: array of Byte;  iLen: Integer): Byte;
var
  iLoop : Integer;
begin
  Result := 0;
  for iLoop := 0 to iLen - 1 do Result := Result + AData[iLoop];
  Result := Result xor $FF + 1;
end;

function GetHexString(AData: array of Byte;  iLen: Integer): String;
var
  iLoop: Integer;
begin
  Result := '';
  for iLoop := 0 to iLen - 1 do
    Result := Result + IntToHex(AData[iLoop], 2);
  Result := Result + IntToHex(GetLRC(AData, iLen), 2);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  AData: array[0..5] of Byte;
begin
  AData[0] := $01;
  AData[1] := $02;
  AData[2] := $00;
  AData[3] := $00;
  AData[4] := $00;
  AData[5] := $01;
  ShowMessage(GetHexString(AData, 6));
end;

 

 

3:C# code
 static byte LRC(byte[] data)
  {
    byte lrc = 0;
    foreach (byte c in data)
    {
      lrc += c;
    }
    return (byte)-lrc; 
  }

delphi crc校验 const //Crc16表 crc16tab : Array[0..255] of Word = ( $0000, $C0C1, $C181, $0140, $C301, $03C0, $0280, $C241, $C601, $06C0, $0780, $C741, $0500, $C5C1, $C481, $0440, $CC01, $0CC0, $0D80, $CD41, $0F00, $CFC1, $CE81, $0E40, $0A00, $CAC1, $CB81, $0B40, $C901, $09C0, $0880, $C841, $D801, $18C0, $1980, $D941, $1B00, $DBC1, $DA81, $1A40, $1E00, $DEC1, $DF81, $1F40, $DD01, $1DC0, $1C80, $DC41, $1400, $D4C1, $D581, $1540, $D701, $17C0, $1680, $D641, $D201, $12C0, $1380, $D341, $1100, $D1C1, $D081, $1040, $F001, $30C0, $3180, $F141, $3300, $F3C1, $F281, $3240, $3600, $F6C1, $F781, $3740, $F501, $35C0, $3480, $F441, $3C00, $FCC1, $FD81, $3D40, $FF01, $3FC0, $3E80, $FE41, $FA01, $3AC0, $3B80, $FB41, $3900, $F9C1, $F881, $3840, $2800, $E8C1, $E981, $2940, $EB01, $2BC0, $2A80, $EA41, $EE01, $2EC0, $2F80, $EF41, $2D00, $EDC1, $EC81, $2C40, $E401, $24C0, $2580, $E541, $2700, $E7C1, $E681, $2640, $2200, $E2C1, $E381, $2340, $E101, $21C0, $2080, $E041, $A001, $60C0, $6180, $A141, $6300, $A3C1, $A281, $6240, $6600, $A6C1, $A781, $6740, $A501, $65C0, $6480, $A441, $6C00, $ACC1, $AD81, $6D40, $AF01, $6FC0, $6E80, $AE41, $AA01, $6AC0, $6B80, $AB41, $6900, $A9C1, $A881, $6840, $7800, $B8C1, $B981, $7940, $BB01, $7BC0, $7A80, $BA41, $BE01, $7EC0, $7F80, $BF41, $7D00, $BDC1, $BC81, $7C40, $B401, $74C0, $7580, $B541, $7700, $B7C1, $B681, $7640, $7200, $B2C1, $B381, $7340, $B101, $71C0, $7080, $B041, $5000, $90C1, $9181, $5140, $9301, $53C0, $5280, $9241, $9601, $56C0, $5780, $9741, $5500, $95C1, $9481, $5440, $9C01, $5CC0, $5D80, $9D41, $5F00, $9FC1, $9E81, $5E40, $5A00, $9AC1, $9B81, $5B40, $9901, $59C0, $5880, $9841, $8801, $48C0, $4980, $8941, $4B00, $8BC1, $8A81, $4A40, $4E00, $8EC1, $8F81, $4F40, $8D01, $4DC0, $4C80, $8C41, $4400, $84C1, $8581, $4540, $8701, $47C0, $4680, $8641, $8201, $42C0, $4380, $8341, $4100, $81C1, $8081, $4040 );
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值