CRC-CCITT (0xFFFF) delphi实现
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CRC-CCITT (0xFFFF) delphi实现相关的知识,希望对你有一定的参考价值。
由于要和java的服务沟通,最终确定要实现的是:
width=16
poly=0x1021
init=0xffff
refin=false
refout=false
xorout=0x0000
check=0x29b1
residue=0x0000
name="CRC-16/CCITT-FALSE"
网络找了很多,结果结果对不上
下载了工具,都不是想要的,最终找到校验在线网址:
https://www.lammertbies.nl/comm/info/crc-calculation.html
实现代码:
function CRC16_CCITT_0xFFFF(bytes: TBytes): Word;
const
polynomial = $1021;
var
crc: Word;
I, J: Integer;
b: Byte;
bit, c15: Boolean;
begin
crc := $FFFF; // initial value
for I := 0 to High(bytes) do
begin
b := bytes[I];
for J := 0 to 7 do
begin
bit := (((b shr (7-J)) and 1) = 1);
c15 := (((crc shr 15) and 1) = 1);
crc := crc shl 1;
if (c15 xor bit) then crc := crc xor polynomial;
end;
end;
Result := crc and $ffff;
end;
当然如果字符串过长,则需要查表法实现,
https://www.libcrc.org/download/
给了c的实现。
以上是关于CRC-CCITT (0xFFFF) delphi实现的主要内容,如果未能解决你的问题,请参考以下文章