这段代码是什么意思

anya 2011-03-29 10:13:44
不懂C语言,偏偏领导给了这段C代码让我在net中调用,请帮忙翻译下这段代码的意思,最好每句都翻译。然后我用net写一遍。
谢谢。在线等。
代码如下:


CRC32计算方法(C语言版)
void CreateCrc32Table()
{
int i,j;

unsigned long crc;

for(i = 0; i < 256; ++i)
{
crc = i;
for(j = 8; j != 0; j--)
{
if (crc & 0x1)
{
crc >>= 1;
crc ^= 0xedb88320;
}
else
{
crc >>= 1;
}
}
m_szCrc32Table[i] = crc;
}

}//end of CreateCrc32Table()

unsigned long Calc(const unsigned char *lpBytes, int length)
{
unsigned long crc = 0xffffffff;

for(;length--;)
{
crc = (crc >> 8) ^ m_szCrc32Table[(crc & 0xFF) ^ *lpBytes++] ;
}

return (~crc);

}//end of Calc()

调用方法:
unsigned long crc32;
crc32 = Calc(待计算内容首地址,内容长度);
...全文
79 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
anya 2011-03-29
  • 打赏
  • 举报
回复
非常感谢大家,解决了我的问题。结贴。
anya 2011-03-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 delphiwcdj 的回复:]
大致标注下,原理不解释了

C/C++ code

void CreateCrc32Table()
{
int i,j;

unsigned long crc;

for(i = 0; i < 256; ++i)
{
crc = i;
for(j = 8; j != 0; j--)
{
……
[/Quote]

很详细,我懂了,谢谢!
wolffan3150 2011-03-29
  • 打赏
  • 举报
回复
crc32算法
luciferisnotsatan 2011-03-29
  • 打赏
  • 举报
回复
直接google crc32算法。看看原理,你就应该知道这些代码含义了。
delphiwcdj 2011-03-29
  • 打赏
  • 举报
回复
大致标注下,原理不解释了

void CreateCrc32Table()
{
int i,j;

unsigned long crc;

for(i = 0; i < 256; ++i)
{
crc = i;
for(j = 8; j != 0; j--)
{
if (crc & 0x1)// 判断crc最后一位是否为1
{
crc >>= 1;// crc右移1位,相当于crc除以2
crc ^= 0xedb88320;// crc再与0xedb88320异或,相当于 crc = crc ^ 0xedb88320;
}
else
{
crc >>= 1;// 同上
}
}
m_szCrc32Table[i] = crc;// 保存
}

}//end of CreateCrc32Table()

unsigned long Calc(const unsigned char *lpBytes, int length)
{
unsigned long crc = 0xffffffff;

for(;length--;)// 如果length不为0,一直循环
{
crc = (crc >> 8) ^ m_szCrc32Table[(crc & 0xFF) ^ *lpBytes++] ;// &表示与运算,即 1&0 == 0 , 1&1 == 1
}

return (~crc);// 取反,即,~1 == 0 , ~0 == 1

}//end of Calc()

调用方法:
unsigned long crc32;
crc32 = Calc(待计算内容首地址,内容长度);
luciferisnotsatan 2011-03-29
  • 打赏
  • 举报
回复
const unsigned char *lpBytes // net里没指针,在这里,你可以把它理解为一个数组,取值范围 0~255
0xffffffff,16进制
剩下的就是一堆位运算符。google下就知道了。
bdmh 2011-03-29
  • 打赏
  • 举报
回复
crc校验,没什么东西,都是位运算

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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