哪位大哥帮我把C语言的RCR算法转成DELPHI语言(50分)

  • 主题发起人 主题发起人 caixike
  • 开始时间 开始时间
C

caixike

Unregistered / Unconfirmed
GUEST, unregistred user!
/*****************************************************************************************************
* 函数名称:unsigned char SELCrc8( unsigned char accum,unsigned char *pbuf,unsigned int count )
** 功 能: 计算8位CRC
* 入口参数:unsigned char accum初值 ,unsigned char *ptr数据指针,unsigned int count 数据长度
* 出口参数: unsigned char 8位CRC值
******************************************************************************************************/
extern "C" unsigned char FAR PASCAL EXPORT SELCrc8( unsigned char accum,unsigned char *pbuf,unsigned int count )
{
unsigned int i;
unsigned int j;
for ( i = 0 ; i<count ; i++)
{
accum = accum ^ *pbuf;
for ( j = 0 ; j<8 ; j++ )
{
if ( accum & 0x80 )
{
accum = ( accum << 1 ) ^ 0x1D;
}
else
{
accum = accum << 1 ;
}
}
pbuf++;
}
return ( accum );
}

调用举例:

SendCrc = SELCrc8(0x0a,&SendBuff[0],20) ;用0AH的初值,计算SendBuff数据序列中,20个字节的CRC8PWD,结果送入SendCrc。
告知:EMail:caixike@163.com 先谢谢!!!
 
分高点。或许有人帮你写。
 
大哥!你要多少分?我给.
 
爽快。
我写。
 
function SELCrc8(accum:char;pbuf:pchar;count:integer ):char;
var
i,j:integer;
begin
for i := 0 to count-1 do
begin
accum := char(byte(accum) xor byte(pbuf^));
for j := 0 to 7 do
begin
if ( byte(accum) and $80 )<>0 then
accum := char(( byte(accum) shl 1 ) xor $1D)
else
accum := char(byte(accum) shl 1) ;
end;
inc(pbuf);
end;
result:= accum ;
end;
 
function SELCrc8(accum: byte; pbuf: TByteArray; count: Integer): Byte;
var
i, j, k : Integer;
begin
k := 0;
for i := 0 to Count - 1 do
begin
accum := accum xor pbuf[k];
for j := 0 to 7 do
begin
if (accum and $80) = 0 then
begin
accum := (accum shl 1) xor $1D;
end
else
begin
accum := accum shl 1;
end;
end;
inc(k);
end;
Result := accum;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
SendCrc : Byte;
SendBuff : TByteArray;
i : Integer;
begin
for i := 0 to 19 do SendBuff := 20 - i; //赋值,由你自己定;

SendCrc := SELCrc8($A, SendBuff, 20); //调用;
Button1.Caption := Inttostr(SendCrc);
end;

你测试一下把。
 
谢了!给分
 
多人接受答案了。
 

Similar threads

I
回复
0
查看
579
import
I
I
回复
0
查看
846
import
I
I
回复
0
查看
664
import
I
I
回复
0
查看
767
import
I
后退
顶部