社区
C语言
帖子详情
C语言的CRC16校验查表法如何弄?
unsv29mj
2009-10-14 02:34:04
C语言的CRC16校验查表法如何弄?
要求初值是0xFFFF。
表达式是A001
多谢各位(我总共就有10分 有点少啊 多谢)
...全文
1148
4
打赏
收藏
C语言的CRC16校验查表法如何弄?
C语言的CRC16校验查表法如何弄? 要求初值是0xFFFF。 表达式是A001 多谢各位(我总共就有10分 有点少啊 多谢)
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Caballeroo
2009-10-15
打赏
举报
回复
/* Table of CRC constants - implements x^16+x^12+x^5+1 */
static const uint16_t crc16_tab[] = {
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,
};
uint16_t
cyg_crc16(unsigned char *buf, int len)
{
int i;
uint16_t cksum;
cksum = 0;
for (i = 0; i < len; i++) {
cksum = crc16_tab[((cksum>>8) ^ *buf++) & 0xFF] ^ (cksum << 8);
}
return cksum;
}
unsv29mj
2009-10-15
打赏
举报
回复
unsv29mj
2009-10-15
打赏
举报
回复
有两下子啊 厉害!!! 不过有些冒险^ *buf++ 优先级有些冒险
最好分部写!!!
这是欧洲的写法!!
我要求是美国的写法!美国的查表写法网上现在我还没有找到
权是A001是用于modbus协议的!!
多谢
unsv29mj
2009-10-14
打赏
举报
回复
还没有人回复啊
CRC
校验
查表
法
详解
CRC
校验
的
查表
法
理解算
法
原理基础计算
查表
法
原理及计算
查表
法
中的表
CRC
校验
中数据逆序
CRC
校验
中的其它参数 算
法
原理
CRC
(Cyclic Redundance Check)循环冗余
校验
,是基于某个多项式计算出一组
校验
码,用于核对数据传输过程中是否被更改或传输错误 基础计算 假设需要检验的数据 g :10100111,这串二进制码可以表示为代数多项式g(x) = x^7 + x^5 + x^2 + x +1, 而作为除数的多项式 h(x) 可以自由选择或者按照国际标准选择,一般h(x)的阶数如果是m
crc
16
查表
法
c语言
实现,
CRC
校验
查表
法
原理及实现(
CRC
-
16
)
绪论在网上浏览了不少关于
CRC
校验
的文章,基本上都是针对
CRC
校验
原理的阐述以及关于
CRC
校验
查表
法
的实际应用以及具体软件实现方
法
。至于查的表是怎么来的,软件为何要这样实现不少文章并无说明。本篇文章就针对这两点问题进行总结和概括,有错误的地方欢迎你们评论区指出,不胜感激。注意:本篇文章不涉及
CRC
校验
的基本原理,若是不了解
CRC
的基本原理,请移步至以下连接:
CRC
查找表
法
推导及代码实现比较如下的C...
CRC
(循环冗余
校验
)讲解以及
c语言
高效实现(附
CRC
-
16
查表
法
代码)
本文深入探讨了循环冗余
校验
(
CRC
) 技术,一种在数字通信和数据存储领域保障数据完整性的关键差错检测机制。
modbus
CRC
16
校验
计算
法
查表
法
1、 计算步骤(1). 预置
16
位寄存器为十六进制 0xFFFF(即全为 1) ,称此寄存器为
CRC
寄存器;(2). 把第一个 8 位数据与
16
位
CRC
寄存器的低位相异或,把结果放于
CRC
寄存器;(3). 检测相异或后的
CRC
寄存器的最低位,若最低位为1,
CRC
寄存器先右移1位,再与多项式A001H进行异或;若为0,则
CRC
寄存器右移1位,无需与多项式进行异或。(4). 重复步骤 3 ,直到右移 8 次,这样整个 8 位数据全部进行了处理;
CRC
校验
(2):
CRC
32
查表
法
详解、代码实现和
CRC
反转
对于现在的CPU来说,基本上都在硬件上实现了
CRC
校验
。但我们还是想用软件来实现一下
CRC
的代码,这样可以更深入地理解里面的原理。所以这一节就来详细地解释如何使用
查表
法
从软件上来实现
CRC
-32的
校验
。另外,
CRC
还有一种反转的情况,实际上反转和不反转没有什么太大的区别,主要是需求和标准的不同。
C语言
70,040
社区成员
243,237
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章