Vector - CAPL - CRC算法介绍(续)
不常用CRC算法
目录
Crc_CalculateCRC8H2F
代码示例
Crc_CalculateCRC32P4
代码示例
Crc_CalculateCRC64
代码示例
Crc_CalculateCRC8H2F
功能:根据数据计算CRC8H2F的相应校验和。
data:待计算CRC8H2F校验和的数据
dataSize:待计算CRC8H2F校验和的数据长度
dataOffset:用于计算有效载荷数据中的CRC的起始索引。
crcLength:计算CRC的数据长度。
crcStartValue:CRC初始值取决于它是第一次呼叫还是后续呼叫。如果firstCall为1,则忽略值。
firstCall:第一次调用或后续调用的标志。可能的值为0(后续调用)或1(第一次调用)。
ccCalculated:计算的CRC8H2F值
返回值:
0:成功计算出CRC8H2F校验和
-1:CRC长度为0
-2:偏移大于或等于长度
-3:长度超出数组范围
-4:长度和偏移量的摘要超出数组范围
代码示例
// first CALL, Offset '0'
on key 'a'
{
long retval;
dword crc;
byte data[9] = {0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39};
retval = Crc_CalculateCRC8H2F(data, elcount (data), 0, elcount (data), 0, 1, crc);
write("CRC of data: 0x%X", crc);
}
// first CALL, Offset '2', Length - 2
on key 'b'
{
long retval;
dword crc;
byte data[11] = {0xAA ,0xAA,0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39};
retval = Crc_CalculateCRC8H2F(data, elcount (data), 2, elcount (data) -2, 0, 1, crc);
write("CRC of data: 0x%X", crc);
}
Crc_CalculateCRC32P4
功能:根据数据计算CRC32P4的相应校验和。
data:待计算CRC32P4校验和的数据
dataSize:待计算CRC32P4校验和的数据长度
dataOffset:用于计算有效载荷数据中的CRC的起始索引。
crcLength:计算CRC的数据长度。
crcStartValue:CRC初始值取决于它是第一次呼叫还是后续呼叫。如果firstCall为1,则忽略值。
firstCall:第一次调用或后续调用的标志。可能的值为0(后续调用)或1(第一次调用)。
ccCalculated:计算的CRC32P4值
返回值:
0:成功计算出CRC32P4校验和
-1:CRC长度为0
-2:偏移大于或等于长度
-3:长度超出数组范围
-4:长度和偏移量的摘要超出数组范围
代码示例
// first CALL, Offset '0'
on key 'a'
{
long retval;
dword crc;
byte data[9] = {0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39};
retval = Crc_CalculateCRC32P4(data, elcount (data), 0, elcount (data), 0, 1, crc);
write("CRC of data: 0x%X", crc);
}
// first CALL, Offset '2', Length - 2
on key 'b'
{
long retval;
dword crc;
byte data[11] = {0xAA ,0xAA,0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39};
retval = Crc_CalculateCRC32P4(data, elcount (data), 2, elcount (data) -2, 0, 1, crc);
write("CRC of data: 0x%X", crc);
}
Crc_CalculateCRC64
功能:根据数据计算CRC64的相应校验和。
data:待计算CRC64校验和的数据
dataSize:待计算CRC64校验和的数据长度
dataOffset:用于计算有效载荷数据中的CRC的起始索引。
crcLength:计算CRC的数据长度。
crcStartValue:CRC初始值取决于它是第一次呼叫还是后续呼叫。如果firstCall为1,则忽略值。
firstCall:第一次调用或后续调用的标志。可能的值为0(后续调用)或1(第一次调用)。
ccCalculated:计算的CRC64值
返回值:
0:成功计算出CRC64校验和
-1:CRC长度为0
-2:偏移大于或等于长度
-3:长度超出数组范围
-4:长度和偏移量的摘要超出数组范围
代码示例
// first CALL, Offset '0'
on key 'a'
{
long retval;
qword crc;
byte data[9] = {0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39};
retval = Crc_CalculateCRC64(data, elcount (data), 0, elcount (data), 0, 1, crc);
write("CRC of data: 0x%X", crc);
}
// first CALL, Offset '2', Length - 2
on key 'b'
{
long retval;
qword crc;
byte data[11] = {0xAA ,0xAA,0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39};
retval = Crc_CalculateCRC64(data, elcount (data), 2, elcount (data) -2, 0, 1, crc);
write("CRC of data: 0x%X", crc);
}