java中实现循环冗余校验(CRC)算法?

virtualjxc 2014-08-05 04:47:10
加精
各位高手,在java中如何实现循环冗余校验(CRC)算法,
具体算法如下:
CRC 是先调入一值是全“1”的16 位寄存器,然后调用一过程将消息中连续的8 位字
节各当前寄存器中的值进行处理。仅每个字符中的8Bit 数据对CRC 有效,起始位和停止位
以及奇偶校验位均无效。
CRC 校验字节的生成步骤如下:
① 装一个 16 位寄存器,所有数位均为1。
② 取被校验串的一个字节与16 位寄存器的高位字节进行“异或”运算。运算结果放
入这个16 位寄存器。
③ 把这个16 寄存器向右移一位。
④ 若向右(标记位)移出的数位是1,则生成多项式1010 0000 0000 0001 和这个寄
存器进行“异或”运算;若向右移出的数位是0,则返回③。
⑤ 重复③和④,直至移出8 位。
⑥ 取被校验串的下一个字节
⑦ 重复③~⑥,直至被校验串的所有字节均与16 位寄存器进行“异或”运算,并移位
8 次。
⑧ 这个16 位寄存器的内容即2 字节CRC 错误校验码。
校验码按照先高字节后低字节的顺序存放。

该如何实现呢,请各位高手帮忙
...全文
5683 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
javahahahne 2015-03-25
  • 打赏
  • 举报
回复
楼主实现了吗?我现在也在求这个算法
蓝色-石头 2014-08-25
  • 打赏
  • 举报
回复
可以,自己试试。
kunkunqian 2014-08-12
  • 打赏
  • 举报
回复
cyuan09 2014-08-08
  • 打赏
  • 举报
回复
这个真应该自己研究一下,别人给的答案无法让自己水平有所提升
my03131302 2014-08-06
  • 打赏
  • 举报
回复
laoer_2002 2014-08-06
  • 打赏
  • 举报
回复
这个要学习下,关注ing
小灰狼 2014-08-06
  • 打赏
  • 举报
回复
有想法为什么自己不去试一下,找别人给你现成答案? 现在八月份,按说学校不应该有实习啊,难道楼主不是应付课程设计的学生?
高坚果兄弟 2014-08-05
  • 打赏
  • 举报
回复
楼主你已经讲得很详细了,为啥不自己实现,java位运算估计就可以完成,我知道jdk里有现成的crc32算法。 前些日子学习写客户端界面,第一次弄界面程序,新建eclipse 里新建Application Client project,发现sun.misc包里居然没有base64算法,jdk源码里也没用源码,好吧那就自己实现好了,参考百度百科里base64算法规则自己写了一个base64类,结果出乎意料编码效率比sun.misc包里的高了30多倍,解码高了10多倍,真实故事
vnvlyp 2014-08-05
  • 打赏
  • 举报
回复
我记得Java解压缩类中有关于CRC的实现吧
ninteo 2014-08-05
  • 打赏
  • 举报
回复
你为什么不去百度?
万物同源 2014-08-05
  • 打赏
  • 举报
回复
teemai 2014-08-05
  • 打赏
  • 举报
回复
推荐下,看看

50,528

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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