Home > Back-end >  C programming language Delphi look-up table method CRC16 function as follows;
C programming language Delphi look-up table method CRC16 function as follows;

Time:09-16

Under-16 code crc16_table [256]=
{
X2042 x0000 0, 0 x1021, 0, 0 x3063, 0 x4084, 0 x50a5, 0 x60c6, 0 x70e7, 0 x8108,
Xb16b x9129 0, 0 xa14a, 0, 0 xc18c, 0 xd1ad, 0 xe1ce, 0 xf1ef, 0 x1231, 0 x0210,
X52b5 x3273 0, 0 x2252, 0, 0 x4294, 0 x72f7, 0 x62d6, 0 x9339, 0 x8318, 0 xb37b,
Xc39c xa35a 0, 0 xd3bd, 0, 0 xf3ff, 0 xe3de, 0 x2462, 0 x3443, 0 x0420, 0 x1401,
X44a4 x64e6 0, 0 x74c7, 0, 0 x5485, 0 xa56a, 0 xb54b, 0 x8528, 0 x9509, 0 xe5ee,
Xd58d xf5cf 0, 0 xc5ac, 0, 0 x3653, 0 x2672, 0 x1611, 0 x0630, 0 x76d7, 0 x66f6,
Xb75b x5695 0, 0 x46b4, 0, 0 xa77a, 0 x9719, 0 x8738, 0 xf7df, 0 xe7fe, 0 xd79d,
X58e5 xc7bc 0, 0 x48c4, 0, 0 x6886, 0 x78a7, 0 x0840, 0 x1861, 0 x2802, 0 x3823,
Xe98e xc9cc 0, 0 xd9ed, 0, 0 xf9af, 0 x8948, 0 x9969, 0 xa90a, 0 xb92b, 0 x5af5,
X6a96 x4ad4 0, 0 x7ab7, 0, 0 x1a71, 0 x0a50, 0 x3a33, 0 x2a12, 0 XDBFD, 0 XCBDC,
X9b79 XFBBF 0, 0 xeb9e, 0, 0 x8b58, 0 xbb3b, 0 xab1a, 0 x6ca6, 0 x7c87, 0 x4ce4,
X3c03 x5cc5 0, 0 x2c22, 0, 0 x0c60, 0 x1c41, 0 xedae, 0 xfd8f, 0 xcdec, 0 XDDCD,
X8d68 xad2a 0, 0 xbd0b, 0, 0 x9d49, 0 x7e97, 0 x6eb6, 0 x5ed5, 0 x4ef4, 0 x3e13,
X0e70 x2e32 0, 0 x1e51, 0, 0 xff9f, 0 xefbe, 0 XDFDD, 0 XCFFC, 0 xbf1b, 0 xaf3a,
X9188 x9f59 0, 0 x8f78, 0, 0 x81a9, 0 xb1ca, 0 xa1eb, 0 xd10c, 0 xc12d, 0 xf14e,
X00a1 xe16f 0, 0 x1080, 0, 0 x30c2, 0 x20e3, 0 x5004, 0 x4025, 0 x7046, 0 x6067,
Xa3fb x83b9 0, 0 x9398, 0, 0 xb3da, 0 xc33d, 0 xd31c, 0 xe37f, 0 xf35e, 0 x02b1,
X32d2 x1290 0, 0 x22f3, 0, 0 x4235, 0 x5214, 0 x6277, 0 x7256, 0 xb5ea, 0 xa5cb,
Xf56e x95a8 0, 0 x8589, 0, 0 xe54f, 0 xd52c, 0 xc50d, 0 x34e2, 0 x24c3, 0 x14a0,
X6447 x0481 0, 0 x7466, 0, 0 x5424, 0 x4405, 0 xa7db, 0 xb7fa, 0 x8799, 0 x97b8,
Xc71d xe75f 0, 0 xf77e, 0, 0 xd73c, 0 x26d3, 0 x36f2, 0 x0691, 0 x16b0, 0 x6657,
X5634 x7676 0, 0 x4615, 0, 0 xd94c, 0 xc96d, 0 xf90e, 0 xe92f, 0 x99c8, 0 x89e9,
X5844 xb98a 0, 0 xa9ab, 0, 0 x4865, 0 x7806, 0 x6827, 0 x18c0, 0 x08e1, 0 x3882,
Xdb5c x28a3 0, 0 xcb7d, 0, 0 xeb3f, 0 xfb1e, 0 x8bf9, 0 x9bd8, 0 xabbb, 0 xbb9a,
X6a37 x4a75 0, 0 x5a54, 0, 0 x7a16, 0 x0af1, 0 x1ad0, 0 x2ab3, 0 x3a92, 0 xfd2e,
Xcd4d xed0f 0, 0 xdd6c, 0, 0 xbdaa, 0 xad8b, 0 x9de8, 0 x8dc9, 0 x7c26, 0 x6c07,
X3ca2 x5c64 0, 0 x4c45, 0, 0 x2c83, 0 x1ce0, 0 x0cc1, 0 xef1f, 0 xff3e, 0 xcf5d,
Xbfba xdf7c 0, 0 xaf9b, 0, 0 x8fd9, 0 x9ff8, 0 x6e17, 0 x7e36, 0 x4e55, 0 x5e74,
X0ed1 x2e93 0, 0 x3eb2, 0, 0 x1ef0,
};


Under-16 Fast_CRC16 (U8 * p, U8 len)
{
Under-16 chksum=0;

While (len -)
{
Chksum=crc16_table [(chksum & gt; & gt; 8) ^ * p++] ^ (chksum & lt; <8);
}

Return chksum.
}


This is a C function, Delphi function (look-up table method)

CodePudding user response:

Const
Crc16_table: array [0.. 255] of the word=(
$0000, $1021,... );

The function Fast_CRC16 (p: PByte; Len: byte) : word;
The begin
Result:=0;
While len & gt; 0 do
The begin
The Result: crc16_table=[(Result 8 SHR) xor p ^] xor (Result SHL 8);
Inc (p);
Dec (len);
end;
end;
  • Related