CRC8 CRC16 查表法
转自:http://blog.chinaunix.net/uid-14114479-id-1988515.html
CRC8查表法
/*****************************************************
描 述: CRC8校验子程序 x^8+x^5+x^4+x^0
入口参数: 指向数组指针,校验字节个数
出口参数: 8位CRC校验码
******************************************************/
const char CRC8Table[]={
0, 94, 188, 226, 97, 63, 221, 131, 194, 156, 126, 32, 163, 253, 31, 65,
157, 195, 33, 127, 252, 162, 64, 30, 95, 1, 227, 189, 62, 96, 130, 220,
35, 125, 159, 193, 66, 28, 254, 160, 225, 191, 93, 3, 128, 222, 60, 98,
190, 224, 2, 92, 223, 129, 99, 61, 124, 34, 192, 158, 29, 67, 161, 255,
70, 24, 250, 164, 39, 121, 155, 197, 132, 218, 56, 102, 229, 187, 89, 7,
219, 133, 103, 57, 186, 228, 6, 88, 25, 71, 165, 251, 120, 38, 196, 154,
101, 59, 217, 135, 4, 90, 184, 230, 167, 249, 27, 69, 198, 152, 122, 36,
248, 166, 68, 26, 153, 199, 37, 123, 58, 100, 134, 216, 91, 5, 231, 185,
140, 210, 48, 110, 237, 179, 81, 15, 78, 16, 242, 172, 47, 113, 147, 205,
17, 79, 173, 243, 112, 46, 204, 146, 211, 141, 111, 49, 178, 236, 14, 80,
175, 241, 19, 77, 206, 144, 114, 44, 109, 51, 209, 143, 12, 82, 176, 238,
50, 108, 142, 208, 83, 13, 239, 177, 240, 174, 76, 18, 145, 207, 45, 115,
202, 148, 118, 40, 171, 245, 23, 73, 8, 86, 180, 234, 105, 55, 213, 139,
87, 9, 235, 181, 54, 104, 138, 212, 149, 203, 41, 119, 244, 170, 72, 22,
233, 183, 85, 11, 136, 214, 52, 106, 43, 117, 151, 201, 74, 20, 246, 168,
116, 42, 200, 150, 21, 75, 169, 247, 182, 232, 10, 84, 215, 137, 107, 53
};
unsigned char CRC8_Table(unsigned char *p, char counter)
{
unsigned char crc8 = 0;
for( ; counter > 0; counter--){
crc8 = CRC8Table[crc8^*p];
p++;
}
return(crc8);
}
/*****************************************************
描 述: text
******************************************************/
void main()
{
unsigned char a[] = {0x02, 0x03};
printf("%d", CRC8_Table(&a, 2));
getch();
}
CRC16查表法
/*
*****************************************************************************************
创 建 人: L J
修改时间: 2008-7-9
描 述: CRC16 校验
******************************************************************************************
*/
unsigned int CRC16Table[256]={ /* CRC16 余式表 */
0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7,
0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef,
0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6,
0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de,
0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485,
0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d,
0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4,
0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc,
0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823,
0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b,
0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12,
0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a,
0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41,
0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49,
0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70,
0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78,
0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f,
0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067,
0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e,
0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256,
0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d,
0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c,
0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634,
0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab,
0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3,
0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a,
0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92,
0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9,
0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1,
0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8,
0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0
};
/*************************************************************
描 述: CRC16校验查表子程序,速度快,占用空间大
入口参数: 指向数组指针,校验字节个数
出口参数: 16位CRC校验码
**************************************************************/
unsigned int CRC16_Table(unsigned char *pcrc, unsigned char count)
{
unsigned int crc16 = 0;
unsigned char crcregister;
for( ; count > 0; count--){
crcregister = (unsigned int)crc16 >> 8;
crc16 <<= 8;
crc16 ^= CRC16Table[crcregister ^ *pcrc];
pcrc++;
}
return(crc16);
}
/*****************************************************
描 述: text
******************************************************/
unsigned char king[]={0x00, 0x11, 0x22};
void main()
{
printf("0x%x", CRC16_Table(king, 3));
getch();
}
CRC8 CRC16 查表法相关推荐
- CRC16查表法原理
Preface CRC(Cyclic Redundancy Check)是数字通信系统中广泛使用的差错检测技术,本文将探究使用广泛的CRC查表法的原理实现细节,也作为一次学习记录总结. 一.CRC校验 ...
- golang crc校验 crc8 crc32 查表法
golang crc校验 crc8 crc32 查表法 package utilimport ("math" )var crc32tab = []uint32{0x00000000 ...
- CRC16查表法的C语言实现
循环冗余码校验英文名称为Cyclical Redundancy Check,简称CRC.它是利用除法及余数的原理来作错误侦测(Error Detecting)的.实际应用时,发送装置计算出CRC值并随 ...
- crc16查表法c语言实现,CRC校验查表法原理及实现(CRC-16)
绪论 在网上浏览了不少关于CRC校验的文章,基本上都是针对CRC校验原理的阐述以及关于CRC校验查表法的实际应用以及具体软件实现方法. 至于查的表是怎么来的,软件为何要这样实现不少文章并无说明.本篇文 ...
- CRC查表法——表的由来及Java实现CRC8校验算法
转载请标明出处: http://blog.csdn.net/xx326664162/article/details/51718857 文章出自:薛瑄的博客 你也可以查看我的其他同类文章,也会让你有一定 ...
- CRC算法 个人学习笔记 直接法、查表法注意点
CRC检验码主要是用在数据校验中,用于判断对应数据是否发生传输错误,详细的介绍百度就可以.本文主要是记录我个人在这几天学习使用CRC的过程中遇到的问题.各位在阅读时如果有发现问题,可在评论区留言,谢谢 ...
- E002-CRC查表法-表的由来与实现1
一.背景 CRC计算中常用空间换时间的方案即查表法,从前面的文章关于CRC的介绍中不难知道,crc的表其实就是对于整个字节256个数据的不同结果记录的集合. 1. 本文主要针对CRC16查表法表的计算 ...
- crc16modbus查表法_查表法计算CRC16校验值
/******************************************************************************* * Copyright (c) 201 ...
- 常用crc查表法_CRC校验码简介及CRC16的计算方法
点击上方"嵌入式从0到1",选择"置顶/星标公众号" 干货福利,第一时间送达! 什么是CRC校验? CRC即循环冗余校验码(Cyclic Redundancy ...
最新文章
- 9.68最长公共子序列
- Lead saved query bug
- 可访问性不一致 可访问性低_什么是网站可访问性?
- Rsync、Inotify-tools简介
- [ES6系列-01]Class:面向对象的“新仇旧恨”
- Android 布局
- websocket php apache,PHP第一篇:PHP WebSocket实现前后端数据交互,亲测可用(windows+ apache2.4 +php5.6 )...
- 《自然语言处理技术在中文全文检索中的应用》笔记
- CSS中的传统布局、多列布局、弹性伸缩布局及Emmet工具
- 计算机系统基础实验2——bomb
- 2013网易实习生招聘 岗位:数据挖掘工程师
- 微信小程序页面栈超过【10层】之后无法打开其他页面原因
- 超强大在线词频统计功能,从一篇文章到一个G的文本均可轻松统计
- 基于SUSAN算法的边缘检测方法研究(Matlab代码实现)
- pe修复linux驱动,【CTF习题】BrokenDrivers(驱动修复及内核调试)
- 一克500元比黄金还贵的片仔癀,炒作退潮“中药茅”要“黄”了?
- 【CC++】这天是星期几?
- 友盟+首席产品官 林鸣晖:从统计平台到数据智能云服务的9年进阶之路
- 路径规划:粒子群算法
- Cadence基础知识8(3W原则的实质以及20H原则最强整理)
热门文章
- Excel如何给单元格加斜线
- js 防止网络慢时 表单重复提交问题
- 有价值项目分享,缺项目可直接搜索(持续更新中)
- 【拍摄日志五】拍摄手法,画面构图,光影关系
- OUTLOOK无法打开
- 【解决方案】Error response from daemon: Conflict. The container name /mongo is already in use by contain
- unity package manager ui 报错An ite m with the same key has alrea d ybeen added.Key
- 计算机基础应用在线模拟考试,计算机应用基础模拟试卷一与答案.pdf
- 代码 bug 嗅探器:Sanitizer
- Overleaf使用Latex输入中文的两种方法