CRC-CCITT (0xFFFF) delphi实现
时间: 2024-05-07 07:23:33 浏览: 116
crc16-ccitt (xFFFF) LV2012 NIVerified.zip.zip_crc_crc-ccitt_labv
以下是 Delphi 中实现 CRC-CCITT (0xFFFF) 的代码:
```delphi
function CalcCRC16(const data: array of Byte; length: Integer): Word;
var
crc: Word;
i, j: Integer;
begin
crc := $FFFF;
for i := 0 to length - 1 do
begin
crc := crc xor data[i];
for j := 0 to 7 do
begin
if (crc and $0001) = $0001 then
begin
crc := (crc shr 1) xor $8408;
end
else
begin
crc := crc shr 1;
end;
end;
end;
Result := crc;
end;
```
这个函数接受一个字节数组和一个长度参数,并返回一个 Word 类型的 CRC 值。具体使用方法如下:
```delphi
var
data: array[0..5] of Byte = ($01, $02, $03, $04, $05, $06);
crc: Word;
begin
crc := CalcCRC16(data, Length(data));
// 使用计算得到的 CRC 值...
end;
```
需要注意的是,传入的数据应该是字节数组,而不是字符串。如果你有一个字符串需要计算 CRC 值,可以使用以下代码:
```delphi
var
data: AnsiString = 'hello world';
crc: Word;
begin
crc := CalcCRC16(TEncoding.ANSI.GetBytes(data), Length(data));
// 使用计算得到的 CRC 值...
end;
```
阅读全文