当前位置: 首页 > article >正文

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);
}


http://www.kler.cn/a/7942.html

相关文章:

  • JVM详解:类的加载过程
  • 基于yolov8、yolov5的鱼类检测识别系统(含UI界面、训练好的模型、Python代码、数据集)
  • fastadmin多个表crud连表操作步骤
  • Gartner发布安全平台创新洞察:安全平台需具备的11项常见服务
  • 01:(手撸HAL+CubeMX)时钟篇
  • 什么时候需要复写hashcode()和compartTo方法
  • Android 中封装优雅的 MediaPlayer 音频播放器,支持多个播放器
  • Ansys Zemax | 如何使用 Zernike 凹陷表面对全反射系统进行建模
  • html中开源的视频播放器插件有哪些以及官方网站和详细介绍说明
  • linux 共享内存 shmget
  • Day924.自动化测试 -系统重构实战
  • 【Linux】进程理解与学习-程序替换
  • 小白的git入门教程(二)
  • FreeRTOS学习(一)
  • 【分享】太阳能电池性能测试指标,太阳能电池IV测试软件系统
  • JAVAWeb01-BS架构简述、HTML
  • 人脸识别:使用Python和机器学习技术实现
  • 学校的地下网站(学校的地下网站1080P高清)
  • 关于json和xml的知识点总结
  • ROS实践12 自定义源文件并调用
  • Serverless MQTT 服务即将正式上线、新增 2 个平台安装包
  • Python SMTP发送邮件和线程
  • DevExpress WinForms电子表格控件,让应用更快拥有现代办公体验!
  • QT笔记——QuaZIP压缩文件夹
  • 若依Linux环境部署
  • 导数的四则运算