C++ 实现CRC循环冗余校验码
/*
编写一个程序,能够根据输入的原始数据,及所选择的多项式,自动生成CRC校验码。
算法参考:https://www.bilibili.com/video/BV1V4411Z7VA
建议根据上面的链接自己敲一遍,再对比我的代码,一起学习。
*/
#define N 50
#include<string>
#include<vector>
#include <algorithm>
#include<iostream>
using namespace std;
int arr[N];//存放为1的数
static int cot = 0;//指针偏移
void numFun(char num) //遍历多项式系数标记系数为1的数
{
if ('1'==num)
{
arr[cot] = 1;
}
cot++;
}
int main()
{
string rawData;//原始数据
string num;//系数
cout << "请输入原始数据:" << endl;
cin >> rawData;
cout << "请输入多项式的各项系数:" << endl;
cin >> num;
rawData.append(num.size()-1,'0');
string::iterator ite=num.end();
string::iterator ite0 = num.begin();
for_each(ite0+1, ite,numFun);
vector<char>vec(num.size(),'\0');//容器
vector<char>::iterator ite1 = vec.end()-1;
vector<char>::iterator ite2 = vec.begin();
for (size_t i=0;i<vec.size();i++) //容器初始化
{
*ite2 = rawData[i];
ite2++;
}
for (size_t i=0;i<rawData.size()-vec.size();i++) //求CRC校验码
{
ite2 = vec.begin();
if ('1'==*ite2)
{
for (int i=0;i<cot;i++)
{
if(1==arr[i])
{
if ('1'==vec[i+1])
{
vec[i + 1] = '0';
}
else if ('0'==vec[i+1])
{
vec[i + 1] = '1';
}
}
}
}
for (size_t i=0;i<vec.size()-1;i++)
{
vec[i] = vec[i + 1];
}
*ite1 = rawData[vec.size()+i];
}
cout << "CRC校验码为:" << endl;
for (size_t i=1;i<vec.size();i++)
{
cout << vec[i];
}
system("pause");
return 0;
}
C++ 实现CRC循环冗余校验码相关推荐
- CRC循环冗余校验码总结
一.CRC简介 先在此说明下什么是CRC:循环冗余码校验 英文名称为Cyclical Redundancy Check,简称CRC,它是利用除法及余数的原理来作错误侦测(Error Detecting ...
- CRC 循环冗余校验码 的计算方法
循环冗余校验CRC(Cyclical Redundancy Check)字段位于尾部,有32位,有时称为IEEE/ANSI标准的CRC32.要使用一个n位CRC监测 数据传输错误,被检查的消息首先要追 ...
- 16位CRC循环冗余校验码生成函数
16位的CRC校验码生成,可使用以下函数: //16位CRC校验码生成 //返回值:CRC校验码 unsigned int CRC_check(unsigned char *addr,int num) ...
- 循环冗余校验码CRC原理和实例
今天同事问了一个CRC(循环冗余校验码)的问题,好奇心之下学习了一下. 首先说它的原理,百度百科上也有,我就简单说一下,它其实就是采用多项式编码的方法,对于要发送的信息码R,发送方和接收方约定好多项式 ...
- CRC循环冗余校验是如何纠错的
引言 昨天同学突然问我CRC循环冗余校验是如何纠错的?我突然大脑一片空白,学过校验码自然知道CRC循环冗余校验码是可以检错和纠错,但是仿佛只知道求出检验码和检错的过程,但是不知道如何纠错的过程,查询书 ...
- 循环冗余校验码CRC,求解步骤
循环冗余校验码CRC,是软考-计算机组成原理 中一种重要的编码. 下面只是简要描述求解CRC码的解题步骤,面向有一定理论基础的朋友. 直接看例题. 例.信息位: 10100110 生成多项式: 解 ...
- 第二章 数据的表示和运算 2.1.6 循环冗余校验码/CRC码 [计算机组成原理笔记]
第二章 数据的表示和运算 2.1.6 循环冗余校验码/CRC码 本笔记参考书目: 计算机组成原理(第六版.立体化教材)白中英.戴志涛 2021王道计算机组成原理视频公开课 本节重点: 循环冗余校验码/ ...
- 计算机组成原理:循环冗余校验码CRC具备“一位纠错”功能的思考与探索
笔者在阅读华中科技大学谭志虎老师主编的<计算机组成原理(微课版)>教材进行复习时,产生了一个疑问,并针对性地进行了一些思考.欢迎广大复习到这里同样有问题的同学(寒假开学接着考试实在有点汗, ...
- 计算机系统基础知识——循环冗余校验码(CRC)
前言:循环冗余校验码(cyclie redundancy check)简称CRC(循环码),是一种能力相当强的检错.纠错码,并且实现编码和检码的电路比较简单,常用于串行传送(二进制位串沿一条信号线逐位 ...
- 奇偶校验码 、循环冗余校验码(CRC)、 海明码
在计算机运行时,为保证二进制数据在传输时准确无误,通常利用校验码来检测并纠错传输的数据.所谓码距就是任意合法编码之间至少有多少个二进制位不同.例如: 码距位1的"8 1 4 2" ...
最新文章
- 视频 网站 页面开关灯实现方法
- activity 启动模式_腾讯大牛:你根本不懂Activity!
- 三角形圆形创建与擦除java_设计模式---------------简单工厂模式
- 15. 三数之和(双指针)
- C++学习笔记(草稿版)
- UE4 HTC VIVE - 番外篇 - 局域网联机三
- vue 实例的生命周期
- 系统分析与设计 HW9
- 计算机类电影制作专业大学,大学本科计算机专业 电影资讯类APP的设计与实现毕业论文.doc...
- GIS制图的基础三点
- python基金比较上机题_使用python筛选基金
- 如何用Ps用高斯模糊
- KVM+OVS环境虚机修改网卡为ovs网桥后启动报错
- Linux命令之查找命令
- 获取浏览器具体的下载链接地址,通过迅雷下载
- <<前端进阶篇>> PDF 出炉了 — 「阿宝哥」,精心准备的 6 万多字 170 页的前端进阶资料
- msys 的安装和使用
- php mcrypt模块,PHP模块mcrypt模块安装
- 离散卷积的c语言编程实验,数字信号处理实验一离散卷积c语言编程.ppt
- Autodesk Inventor Publisher 2013安装破解