请大侠们帮我分析一下这段代码是怎么回事,先谢谢了!
时间:2010-08-07
来源:互联网
各位大侠,我不懂C语言,请帮我看一下,我有一段数据,用下边的sysCRC算法计算后,得到的值是多少?
数据:
11 10 0B 50 00 00 00 00 00 00 00 00 00 00 00 00
D4 00 03 01 08 00 2B C3 A2 9B 00 41 00 44 45 35
30 30 2D 42 41 22 81 00 00 00 00 00 00 00 00 00
00 AC AC 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 08 04 86 02 00 AF 08 05 00 86 02 04 AF 08
05 00 88 04 03 AF 08 05 00 61 80 88 04 05 AF 08
05 00 61 80 00 00 00 00 00 00 00 00 00 00 00 00
后边全是0的部分我省略掉了!
算法函数代码:
static int sysCRC(u_char *sysData)
{
register u_int const POLY = 0x04c11db6;
register u_int FlippedCrc = 0, Crc = 0xffffffff;
register u_char i, CurrentByte, Bit, Msb;
register u_char chksm_1, chksm_2;
for (i=0; i<126; i++) {
CurrentByte = SData[i];
for (Bit=0; Bit<8; Bit++) {
Msb = (Crc >> 31) & 1;
Crc <<= 1;
if (Msb ^ (CurrentByte & 1)) {
Crc ^= POLY;
Crc |= 1;
}
CurrentByte >>= 1;
}
}
for (i=0; i<32; i++) {
FlippedCrc <<= 1;
Bit = Crc & 1;
Crc >>= 1;
FlippedCrc += Bit;
}
Crc = FlippedCrc ^ 0xffffffff;
chksm_1 = Crc & 0xff;
chksm_2 = Crc >> 8;
return (Sdata[126] == chksm_1) && (SData[127] == chksm_2);
}
数据:
11 10 0B 50 00 00 00 00 00 00 00 00 00 00 00 00
D4 00 03 01 08 00 2B C3 A2 9B 00 41 00 44 45 35
30 30 2D 42 41 22 81 00 00 00 00 00 00 00 00 00
00 AC AC 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 08 04 86 02 00 AF 08 05 00 86 02 04 AF 08
05 00 88 04 03 AF 08 05 00 61 80 88 04 05 AF 08
05 00 61 80 00 00 00 00 00 00 00 00 00 00 00 00
后边全是0的部分我省略掉了!
算法函数代码:
static int sysCRC(u_char *sysData)
{
register u_int const POLY = 0x04c11db6;
register u_int FlippedCrc = 0, Crc = 0xffffffff;
register u_char i, CurrentByte, Bit, Msb;
register u_char chksm_1, chksm_2;
for (i=0; i<126; i++) {
CurrentByte = SData[i];
for (Bit=0; Bit<8; Bit++) {
Msb = (Crc >> 31) & 1;
Crc <<= 1;
if (Msb ^ (CurrentByte & 1)) {
Crc ^= POLY;
Crc |= 1;
}
CurrentByte >>= 1;
}
}
for (i=0; i<32; i++) {
FlippedCrc <<= 1;
Bit = Crc & 1;
Crc >>= 1;
FlippedCrc += Bit;
}
Crc = FlippedCrc ^ 0xffffffff;
chksm_1 = Crc & 0xff;
chksm_2 = Crc >> 8;
return (Sdata[126] == chksm_1) && (SData[127] == chksm_2);
}
作者: swallowcn 发布时间: 2010-08-07
帮我看看吧!
作者: swallowcn 发布时间: 2010-08-07
传入参数是sysData没有使用,又莫名其妙调用了个SData,你确定这段代码正确?

作者: daybreakcx 发布时间: 2010-08-07
还有个问题,最后的返回值一个是Sdata,另一个是SData。如果连同sysData都是一样的东西,那么返回值是0…………
作者: daybreakcx 发布时间: 2010-08-07
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28