关于CRC32校验问题
本人从网上查看关于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)