关于CRC32校验问题

liu1039950258 2015-07-08 02:09:31
本人从网上查看关于CRC32计算的问题,需要校验的数据为Byte byte[] = {0x40,0xFF,0x04,0x80,0x01,0x00,0x00,0x00};
如果采用网上通用的算法,
#ifndef _CRC32_H
#define _CRC32_H
uint crc32( unsigned char *buf, int len);

#endif

#include <stdio.h>
//#include "crc32.h"
static uint CRC32[256];
static char init = 0;
@implementation A

//初始化表
static void init_table()
{
int i,j;
uint crc;
for(i = 0;i < 256;i++)
{
crc = i;
for(j = 0;j < 8;j++)
{
if(crc & 1)
{
crc = (crc >> 1) ^ 0xEDB88320L;
}
else
{
crc = crc >> 1;
}
}
CRC32[i] = crc;
}
}

//crc32实现函数
uint crc32( unsigned char *buf, int len)
{
uint ret = 0xFFFFFFFF;
int i;
if( !init )
{
init_table();
init = 1;
}
for(i = 0; i < len;i++)
{
ret = CRC32[((ret & 0xFF) ^ buf[i])] ^ (ret >> 8);
}

ret = ~ret;
NSLog(@"%x",ret);
NSLog(@"%x",ret^0xffffffff);
return ret;
}

得出结果为4c42c255 和 b3bd3daa,这个结果在计算器上也是对的,但计算器上还有另外一个算法的结果66efdab9 ,而我想要求的是这个结果,该怎么实现啊,因为对c/c++实在不怎么在行,求大牛帮助我

(计算器上2种算法参数有点不同, 第一种 poly:0x04c11db7 init:0xffffffff refin: true refout: true xorout:0xffffffff ; 第二种,也是我想要的那种 ploy:0x04c11db7 init:0xffffffff refin:false refute :false xorout:0x00000000)
...全文
211 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2015-07-08
  • 打赏
  • 举报
回复
使用的多项式不同,我猜。

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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