CRC4校验C语言源码实现
#include<stdio.h>
#include <string.h> //该程序中二进制数用字符串表示,比如二进制的110就用"110"表示
//该函数完成二进制数的异或
//result保存异或的结果,s1和s2为两个二进制串
char* strxor(char *result, const char *s1, const char *s2)
{ int i=0; while(s1[i] && s2[i]){ if(s1[i] != s2[i]){ //相异的时候为1 result[i] = '1'; } else{ //相同则为0 result[i] = '0'; } ++i; } result[i] = '\0'; //字符串结束 return result;
} //将字符串左移一位
//传入字符串本身,返回字符串本身
char* strlmv(char *s)
{ int i=0; while(s[i]){ s[i] = s[i+1]; //前一个等于后一个 ++i; } return s;
} //该函数完成模2除法
//传入参数:被除数 除数 保存商的空间 保存余数的空间
void strm2div(const char *strM, const char *strP, char *strQ, char *strR)
{ int lM = strlen(strM); //被除数的长度 int lP = strlen(strP); //除数的长度 int L = lM+lP; //被除数和除数的总长 int i; //循环需要的 char *sM = new char[L+1]; //使用sM替换被除数,前lM个值为除数本身,后lP个值用0补上 for(i=0; i<L; ++i){ if(i<lM){ //前lM个值为除数本身 sM[i] = strM[i]; } else{ //后lP个值用0补上 sM[i] = '0'; } } sM[i] = '\0'; //字符串结束 strncpy(strR, sM, lP); //一开始余数照搬被除数 strR[lP] = '\0'; //字符串结束 for(i=0; i<lM; ++i){ if(strR[0]=='1'){ //如果余数最高位为1 strxor(strR, strR, strP); //余数与除数做异或,异或后的值直接更新到余数 strQ[i] = '1'; //商1 } else{ //如果余数高位为0 //这里应该是与lP个0做异或,因为和0做异或等于本身,因此略去 strQ[i] = '0'; //商0 } strlmv(strR); //把余数左移(最高位丢弃) strR[lP-1] = sM[lP+i]; //在末尾补上对应的被除数位 strR[lP] = '\0'; //字符串结束 } strR[lP-1] = '\0'; //余数只取前lP-1位(比除数P少一位) strQ[i] = '\0'; //字符串结束 delete sM; //回收空间
}//该函数输出CRC4的帧检验序列
//传入待传送的数据strM 帧检验序列保存的空间
//返回帧检验序列
char *crc4(const char *strM, char *fcs)
{ char *tmQ = new char[strlen(strM)+1]; strm2div(strM, "10011", tmQ, fcs); //使用模2计算的方式求出FCS,带传送数据/10011再取余数 return fcs;
} //CRC4校验演示
void main()
{ char inbuf[100], fcs[100]; //输入缓冲区 FCS缓冲区int i=0,j=0;printf("\n输入M:");scanf("%s",inbuf);while(inbuf[0]!='0' || inbuf[1]!='\0'){ printf("FCS:");puts(crc4(inbuf, fcs));printf("校验帧:");strcat(inbuf,fcs);puts(inbuf);crc4(inbuf, fcs);//检验for(i=0;i<100;i++){if(fcs[i]==1) j++;}printf("检验结果:"); printf("%d Error!\n",j);printf("输入M:");scanf("%s",inbuf);}
}
CRC4校验C语言源码实现相关推荐
- 【安全算法之SHA1】SHA1摘要运算的C语言源码实现
[安全算法之SHA1]SHA1摘要运算的C语言源码实现 概述 头文件定义 C语言版本的实现源码 测试用例 github仓库 更多参考链接 概述 大家都知道摘要算法在安全领域,也是一个特别重要的存在,而 ...
- 【安全算法之SHA512】SHA512摘要运算的C语言源码实现
[安全算法之SHA512]SHA512摘要运算的C语言源码实现 概述 头文件定义 C语言版本的实现源码 测试用例 github仓库 更多参考链接 概述 大家都知道摘要算法在安全领域,也是一个特别重要的 ...
- Go语言源码分析CAS的实现和Java如出一辙
看了Go的源码CAS这块实现和java还是类似的. 关于Java的分析参考:Java使用字节码和汇编语言同步分析volatile,synchronized的底层实现 都是使用汇编指令:LOCK+CMP ...
- golang中文文档_【译】Go 语言源码贡献官方指导文档
以前给 Go 语言项目源码提交过一些 commits,期间阅读他们的官方指导文档的时候觉得这篇指导文档可以作为绝佳的关于大型软件项目的规范管理的参考,因为最近又提交了几个 commits,就又把这篇文 ...
- 易语言php支付宝,支付宝填表登录易语言源码
支付宝填表登录易语言源码 @MS_晨星天宇.版本 2 .支持库 spec .支持库 HtmlView .程序集 窗口程序集_窗口1 .子程序 _按钮1_被单击 调试输出 (开始登录 (超文本浏览框1, ...
- 技术宅的乐趣!网友编写出《流浪地球》“春节十二响”C语言源码
[TechWeb]随着春节档科幻电影<流浪地球>的火爆,越来越多的网友对这部电影产生了浓厚的兴趣.电影中"春节十二响"的桥段相信会让每一个看过电影的观众记忆犹新. 近日 ...
- m3u8切片程序PHP视频切片软件转码系统易语言源码 云转码工具源码
前端为易语言源码(含模块),后端为php源码[代码全开源 无加密]方便各种二开! 1.切片自动上传至你的服务器(m3u8链接) 2.切片完成后提示音 3.切片完成后(在软件上会自动显示地址) 4.批量 ...
- 易语言源码 VX多开 思路+源码
介绍: 易语言源码 VX多开 思路+源码 网盘下载地址: http://kekewangLuo.cc/aOqsvkyTX0g 图片:
- C51单片机与PCF8591模块的交互:C语言源码解析
目录 1. PCF8591模块简介 2. C51单片机与PCF8591的连接 3. C51单片机与PCF8591的C语言源码解析 4. 用法示例 5. 总结 6. 参考文献 在微控制器的世界中,C51 ...
最新文章
- 谷歌大改Transformer注意力,速度、内存利用率都提上去了
- Python操作Redis及连接方式
- 一段使用cURL实现的网页抓取源码,支持POST,Cookies,代理,自定义头.
- Django 模板中使用css, javascript
- 华为交换机VLAN Trunk模式设置
- centos静默安装oracle关于报错UnsatisfiedLinkError exception loading native library:njni10
- Input type (torch.cuda.DoubleTensor) and weight type (torch.cuda.FloatTensor) should be the same
- 浏览器开发重要的参考博客
- SparkSQL下UDF的使用
- RK3399Pro Android Rock-X 人工智能开发系列(2)
- 获取arraylist的长度_啃碎JDK源码(三):ArrayList
- 【测试基础】Linux文本编辑vi命令
- 烽火服务器安装系统,烽火服务器进入bios配置
- python地区房价数据分析_数据分析——房价分析
- 中国电信短信网关程序源码
- Design contains shelved or modified (but not repoured) polygons. The result of DRC is not correct.
- 你唯一需要擅长的事情
- html中图片上下左右留白,vertical-align垂直居中( 消除html中图片下边缘留白 )
- 浅谈MYSQL之级联复制(附带实验)
- 推荐 7 个牛哄哄的电商项目
热门文章
- TECSUN(德生) PL-310 全波段数字解调立体声收音机
- 图片处理软件:Corel Paint Shop Pro Photo X3
- linux权限整改,Linux底层函数库glibc漏洞核查整改指引
- 计算机软件退税,国税发[1995]209号 国家税务总局关于使用出口退税计算机管理软件有关问题的通知...
- 网络 | 网络协议与网络制式
- 服务器电源故障日志信息,服务器故障重启日志
- dnf压爆服务器挑战网站,dnf手游压爆服务器挑战完成 称号资格福利放送
- 【SVM分类】基于粒子群算法优化支持向量机实现葡萄酒数据分类附matlab代码
- linux设置内存转储,CentOS7配置kdump内存转储
- 邓俊辉《数据结构》-复杂度/递归学习笔记