帮忙写个CRC校验程序

wlkjhxd 2012-10-29 01:53:22
具体算法如下:
CRC是先调入一值是全“1 ”的16位寄存器,然后调用一过程将消息中连续的8 位字
节各当前寄存器中的值进行处理。仅每个字符中的 8Bit 数据对 CRC有效,起始位和停止位
以及奇偶校验位均无效。
CRC校验字节的生成步骤如下:
① 装一个16位寄存器,所有数位均为1 。
② 取被校验串的一个字节与 16位寄存器的高位字节进行“异或”运算。运算结果放
入这个16位寄存器。
③ 把这个16寄存器向右移一位。
④ 若向右(标记位)移出的数位是 1,则生成多项式1010 0000 0000 0001 和这个寄
存器进行“异或”运算;若向右移出的数位是0 ,则返回③。
⑤ 重复③和④,直至移出8 位。
⑥ 取被校验串的下一个字节
⑦ 重复③~⑥,直至被校验串的所有字节均与 16 位寄存器进行“异或”运算,并移位
8 次。
⑧ 这个16位寄存器的内容即2 字节CRC 错误校验码。
校验码按照先高字节后低字节的顺序存放。
...全文
218 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
XBodhi. 2012-10-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

http://topic.csdn.net/u/20110419/12/824fca19-9e6c-423e-92fe-5b5d3ab557a1.html
http://www.codeproject.com/Articles/35134/How-to-calculate-CRC-in-C
[/Quote]


学习了
宝_爸 2012-10-29
  • 打赏
  • 举报
回复
我也没有做作,试一试下面的:

C# CRC-16(循环冗余错误校验) 基于Modbus
http://826891.blog.163.com/blog/static/8637693201132981354930/

How to calculate CRC in C#?
http://www.codeproject.com/Articles/35134/How-to-calculate-CRC-in-C
stonespace 2012-10-29
  • 打赏
  • 举报
回复
CRC校验是标准算法,你百度一下应该有,

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧