求助大神:帮忙把这个C实现的CRC4算法 改为Java实现,谢谢

易家兴 2016-03-06 07:02:38
校验内容:01 01 00 00 00 09 00 90 55 16 01 10 16 01 10
校验结果:55 C6

校验内容:01 01 00 00 00 09 00 91 C0 A8 01 01 00 C1 A9
校验结果:30 49

void CalulateCRCbySoft(unsigned char *pucData,unsigned char wLength,unsigned
char *pOutData)
{
unsigned char ucTemp;
unsigned int wValue;
Unsigned int crc_tbl[16]={0x0000,0x1021,0x2042,0x3063,0x4084,0x50a5,0x60c6,0x70e7,
0x8108,0x9129,0xa14a,0xb16b,0xc18c,0xd1ad,0xe1ce,0xf1ef}; //四 位 余式表
wValue=0;
//本字节的 CRC 余式等于上一字节的 CRC 余式的低 12 位左移 4 位后,
//再加上上一字节 CRC 余式右移 4 位(也既取高 4 位)和本字节之和后所求得的 CRC 码
while(wLength--!=0)
{
//根据四位 CRC 余式表,先计算高四位 CRC 余式
ucTemp=((wValue>>8))>>4;
wValue<<=4;
wValue^=crc_tbl[ucTemp^((*pucData)>>4)];
//再计算低四位余式
ucTemp=((wValue>>8))>>4;
wValue<<=4;
wValue^=crc_tbl[ucTemp^((*pucData)&0x0f)];
pucData++;
}
pOutData[0]=wValue;
pOutData[1]=(wValue>>8);
}
...全文
78 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
掌握数据结构和算法,可称为算法工程师!这是成为架构师的基础,有Google算法大神亲授。我保证你可以写出时空复杂度都很优的架构。有人专门答疑哟!你想要成为架构工程师吗?立即点击报名按钮吧!北上广容不下肉身,三四线放不下灵魂,程序员里没有穷人,有一种土豪叫 算法工程师。程序 = 数据结构 + 算法程序是为了解决实际问题而存在的。然而为了解决问题,必定会使用到某些数据结构以及设计一个解决这种数据结构的算法。如果说各种编程语言是程序员的招式,那么数据结构和算法就相当于程序员的内功。编程实战算法,不是念PPT,我们讲的就是实战与代码实现与企业应用。程序 = 数据结构 + 算法           ——图灵奖得主,计算机科学家N.Wirth(沃斯)作为程序员,我们做机器学习也好,做python开发也好,java开发也好。有一种对所有程序员无一例外的刚需 —— 算法与数据结构日常增删改查 + 粘贴复制 + 搜索引擎可以实现很多东西。同样,这样也是没有任何竞争力的。我们只可以粘贴复制相似度极高的功能,稍复杂的逻辑没有任何办法。语言有很多,开发框架更是日新月异3个月不学就落后我们可以学习很多语言,很多框架,但招聘不会考你用5种语言10种框架实现同一个功能。真正让程序员有区分度,企业招聘万年不变的重点 —— 算法与数据结构。算法代表程序员水平的珠穆朗玛。

50,523

社区成员

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

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