计算CRC程序(CRC16)
#include <iostream.h>
#include <stdio.h>
typedef unsigned short u_short;
typedef unsigned char u_char;
一。
//data_buf为报文串、data_length为报文串长度、
//crc_key为生成多项式(16位,去除最大位系数1)
//返回两字节校验码
u_short decCRC(u_char *data_buf,int data_length,u_short crc_key)
{
u_short crc=0x0000,data_type=0x0000;
int j=0;
while(data_length>0)
{
data_type=u_short((crc&0xff00)^(*data_buf<<8));
for(j=0;j<8;j++)
{
if(data_type&0x8000)
{
data_type<<=1;
data_type^=crc_key;
}
else
{
data_type<<=1;
}
}
crc<<=8;
crc^=data_type;
data_length--;
data_buf++;
}
return crc;
}
二。效率较高
u_short crc16l(u_char *ptr,u_char len,u_short key) // ptr 为数据指针,len 为数据长度
{
u_char i;
u_short crc=0x0000;
while(len--)
{
for(i=0x80; i!=0; i>>=1)
{
if((crc&0x8000)!=0) {crc<<=1; crc^=key;}
else crc<<=1;
if((*ptr&i)!=0) crc^=key;
}
ptr++;
}
return(crc);
}
!反转多项式是指在数据通讯时,信息字节先传送或接收低位字节,如重新排位影响 CRC
计算速度,故设反转多项式。!如CRC16 1021的反转多项式是8408
u_short crc16r(u_char *ptr, u_char len,u_short key)
{
unsigned char i;
u_short crc=0x0000;
while(len--!=0)
{
for(i=0x01;i!=0;i <<= 1)
{
if((crc&0x0001)!=0) {crc >>= 1; crc ^= key;}
else crc >>= 1;
if((*ptr&i)!=0) crc ^= key;
}
ptr++;
}
return(crc);
}
计算CRC程序(CRC16)相关推荐
- Linux 大文件crc计算,CRC计算方法与C实现
CRC的全称为Cyclic Redundancy Check,中文名称为循环冗余校验.它是一类重要的线性分组码,编码和解码方法简单,检错和纠错能力强,在通信领域广泛地用于实现差错控制.实际上,除数据通 ...
- 如何在 IAR和 KEIL中计算 CRC值
关注.星标公众号,不错过精彩内容 转自:STM32单片机 前言 市面上越来越多的产品对其使用提出了安全要求,如何避免使用过程中对操作者带来危险,或者降低这种危险发生的概率,这都是产品安全性需要考虑的. ...
- 技术分享 | 如何在 IAR和 KEIL中计算 CRC值
前言 市面上越来越多的产品对其使用提出了安全要求,如何避免使用过程中对操作者带来危险,或者降低这种危险发生的概率,这都是产品安全性需要考虑的.鉴于此,相关产品需要通过相关行业的安全认证才能生产上市.针 ...
- stm32CAN波特率计算小程序(QT源码)
软件:Qt Creator 开发环境:Window7 用qt做得一个计算波特率的小程序,在实际的应用中我们设置波特率的时候是通过以下参数来定的: CAN_InitStructure.CAN_SJW=C ...
- 怎么计算python程序执行时间_【华为云技术分享】计算python程序执行时间
写代码的时候,我们可能想知道python的执行效率如何,有如下几种方法可以计算python程序执行时间. 1.方法1 import datetime starttime = datetime.date ...
- matlab中if语句多个_科学计算 | MATLAB程序设计基础
点击"蓝字"关注我们 科学计算 | MATLAB程序设计基础 引言 在前面的学习中,我们都是在命令行窗口逐条输入命令,然后由matlab解释执行,这种交互式的命令执行方式,操作简单 ...
- python计算运动会某个参赛选手的得分。数据保存在文件中_成绩计算电脑程序的使用说明...
成绩计算电脑程序的使用说明 为了计算成绩,特制作这个电脑程序,说明如下: 一.开发软件:Python 二.使用说明: 在电脑D盘根目录下建立两个excel文件,一个是1.xlsx,另一个是2.xlsx ...
- 【华为云技术分享】计算python程序执行时间
写代码的时候,我们可能想知道python的执行效率如何,有如下几种方法可以计算python程序执行时间. 1.方法1 import datetimestarttime = datetime.datet ...
- 在一个请求分页系统中,假定系统分配给一个作业的物理块数为 3,并且此作业的页面走向为 2、3、2、1、5、2、4、5、3、2、5、2。试用 FIFO和 LRU 两种算法分别计算出程序访问过程中所发生
页面置换算法 题目: 在一个请求分页系统中,假定系统分配给一个作业的物理块数为 3,并且此作业的页面走向为 2.3.2.1.5.2.4.5.3.2.5.2.试用 FIFO和 LRU 两种算法分别计算出 ...
最新文章
- springboot下Static变量通过@Value和set方法注入失败的问题和解决办法
- SSH运维总结-【liunx学习】
- jsonArray转换成List
- mfc清除配置ini文件的数据_大数据环境搭建与配置——aptget源更新、CRT链接、文件服务器配置...
- 期权、RSU的区别与行权事宜
- 在NHibernate的单表继承模式下通过父类Repository查询子类
- php微信卡包sdk,微信卡包会员系统
- 怎样实现VLAN间通信,三种解决方案,一节课带你掌握
- javascript中function前面加(/!/+/-/~的含义
- 教你如何实现网页自由!
- 程序员七夕表白方法来了,带走!
- mongorepository查询条件_springboot jpa + mongodb实现多条件查询数据
- 计算机中文名称乱码,中文文件名乱码怎么解决?
- python单用户登录_Python 实现用户登录的简单方法
- 1.html5+css3基础学习笔记(上)
- matlab的损失函数mse,MSELoss损失函数
- 用计算机娱乐教学反思,计算机教学反思
- 不能完成此操作, 因为发生意外错误(错误代码-51)
- 什么是BBR加速,Centos7如何开启BBR加速,优化服务器的传输速度,避免堵塞
- 盘点七大接地气的翅片管式换热器设计软件