谁能把下面crc的代码翻译成delphi的,谢谢!(50)

B

bbcock

Unregistered / Unconfirmed
GUEST, unregistred user!
unsigned short crc16_ccitt(unsigned char data, unsigned short crc) { unsigned short ccitt16 = 0x1021
int i
crc ^= (data < <8)
/* 新的数据与将原来的余数(就是crc)相加(加法就是异或操作) */ /* 求数据的CRC校验码 */ for (i=0
i <8
i++) { if (crc & 0x8000) /* 最高位为1,减去除数 */ { crc < <= 1
crc ^= ccitt16
} else /* 最高位为0,不需要减去除数 */ { crc < <= 1
/* 直接移位 */ } } return crc
} /* 这是个主程序,表示如何计算5个字节的CRC */ void main() { int i
unsigned short crc
char data[5] = { 0x71, 0x88, 0x93, 0xa5, 0x13 }
/* 计算这5个数据的CRC校验码 */ crc = 0
for (i=0
i <5
i++) { crc = crc16_ccitt(data, crc)
} printf("crc is %x", crc)
}
 

草原骏马

Unregistered / Unconfirmed
GUEST, unregistred user!
我试试,不对的地方,自己改改。function crc16_ccitt(data: integer
crc: integer): integer;var ccitt16: integer
i: integer;begin ccitt16 := $1021
crc := crc xor (data shl 8)
for i := 0 to 7 do begin if 1 = (crc and $8000) then begin crc := crc shl 1
crc := crc xor ccitt16
end else begin crc := crc shl 1
end
end
Result := crc;end;procedure TForm1.Button1Click(Sender: TObject);var i: integer
crc: integer
data: array[0..4] of integer;begin data[0] := $71
data[0] := $88
data[0] := $93
data[0] := $a5
data[0] := $13
crc := 0
for i := 0 to 4 do begin crc := crc16_ccitt(data, crc)
end
Button1.Caption := intToStr(crc);end;
 
B

bbcock

Unregistered / Unconfirmed
GUEST, unregistred user!
接受答案了.
 

Similar threads

I
回复
0
查看
706
import
I
I
回复
0
查看
736
import
I
I
回复
0
查看
749
import
I
I
回复
0
查看
630
import
I
顶部