CRC32校验的传参问题

Monkey_Online 2012-09-22 10:00:49
现在的一个作业是:编写帧的解析器,对提供的封装好的帧数据文件进行解析,规定用CRC32位校验
在网上搜到CRC32查表校验的算法:

/* ****************************** CRC校验 ****************************** */
unsigned long int crc32_table[256];
unsigned long int ulPolynomial = 0x04c11db7;

unsigned long int Reflect(unsigned long int ref, char ch){
unsigned long int value=0;
int i;
for(i = 1; i < (ch + 1); i++){
if(ref & 1)
value |= 1 << (ch - i);
ref >>= 1;
}
return value;
}


void init_crc32_table(){
unsigned long int crc,temp;
unsigned long int t1,t2;
unsigned long int flag;
int i,j;
for(i = 0; i <= 0xFF; i++){
temp=Reflect(i, 8);
crc32_table[i]= temp<< 24;
for (j = 0; j < 8; j++){

flag=crc32_table[i]&0x80000000;
t1=(crc32_table[i] << 1);
if(flag==0)
t2=0;
else
t2=ulPolynomial;
crc32_table[i] =t1^t2 ;

}
crc=crc32_table[i];
crc32_table[i] = Reflect(crc32_table[i], 32);
}
return;

}

unsigned long GenerateCRC32(char* DataBuf,unsigned long len) //crc32生成函数
{
unsigned long oldcrc32;
unsigned long crc32;
unsigned long oldcrc;
unsigned int charcnt;
char c,t;
oldcrc32=0x00000000; //初值为0
charcnt=0;
while(len--)
{
t= (oldcrc32>>24)&0xFF; //要移出的字节的值
oldcrc=crc32_table[t]; //根据移出的字节的值查表
c=DataBuf[charcnt]; //新移进来的字节值
oldcrc32=(oldcrc32<<8)|c; //将新移进来的字节值添在寄存器末字节中
oldcrc32=oldcrc32^oldcrc; //将寄存器与查出的值进行xor运算
charcnt++;
}
crc32=oldcrc32;
return crc32;
}

/* *************************************************************************************** */


现在的问题就是:我在c++中通过file.get()获得的是一个字节,请问校验crc的时候怎么样传参呢???????
该如何调用上面的Generate()函数。
在线等。。。。求救!!
...全文
214 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq120848369 2012-09-22
  • 打赏
  • 举报
回复
...fread?
ddcelf 2012-09-22
  • 打赏
  • 举报
回复
首先觉得你的crc32算法是不是有问题,初值都是~0U,算完后在异或~0U,你那个算法初值是0,算完后没取反。

你那个算法是算全buff的crc,分成3部:初始化,计算,完成;你重新组织一下代码变成3个调用,计算部分就是中间的移位异或。收到一个调一次计算,传入上次的crc值,传出新crc就行了。
基于Bootsrap 4.0框架改写全部样式。 ■基于FLex弹性布局重写前端(OA平台因要支持传统业务暂不涉及)。 ■提供全新的Bootstrap 4.0技术文档,并获得Bootstrap官方认同,访问http://code.z01.com/v4 ■前后端全面引入scss(sass)技术,与Bootstrap官方保持一致(作为国内首家引入Bootstrap的CMS厂商,一直推动基产品的国内实施和普及教育)。 ■Markdown编辑器,可访问https://www.73ic.com/Plugins/markdown/ 体验。 ■推出全新的示范站点和云门户www.73i.com (beta)。 ■支持批量SSL证书部署模式 。 ■修正节日LOGO为SVG矢量。 ■修正搜索样式。 ■改进内置搜索表现,提供更多参数。 ■提供丰富的细致搜索。 ■在搜索主页提供svg代码式嵌入示范。 ■提供SASS(SCSS)引用规范 。 ■基于rem单位进行编程。 ■修正2018年节日功能-全部加载SVG矢量图形。 ■改进前端模板为绿色主题。 ■文件引用从单http改为http、https自适应引用方式。 ■提供了.map支持(Map技术介绍https://www.z01.com//help/web/3208.shtml)。 ■修复论坛(贴吧)发帖审核状态码从1改为99,与全局统一。 ■后台启动页配置-自由决定初始首屏界面。 ■增加小程序模块,快速开发小程序。 ■增加:云端建站功能,全新的在线拖拽建站。 ■增加:数据表自由导出为Excel(扩展--数据导出为Excel),自由导出您的任何意表单数据,对于站长业说可以更好的管理自主数据。 ■建站:版块表单功能,提交的表单后台存储 ■建站:模板增加预览功能(PC,iPad,iPhone) ■建站:使用新的编辑器替代ckeditor ■建站:版块数据管理功能(content|image等) ■修复:UEditor编辑器,图片上传Bug ■修复:模型字段,设置为前端不显示时,后台内容管理也不显示Bug ■修复:用户中心--内容--无法添加商品Bug ■修复:会员Excel导入Bug ■增加:扩展邮件发送模块,会记录邮件模板,与发送日志(目标用户是否成功接收) ■增加:新建|修改标签,数据表选择--支持下拉筛选 ■扩展:能力中心--增加[@我的]筛选 ■扩展:增加用户列表JS插件 ■扩展:优化了AJAX单文件上传组件,支持一个页面放置多个上传组件 ■增加:BIS模块 ■扩展:LED设计模块,支持动画等效果 ■修改:Boot4标签解析,增加font字体,基于逐浪字库的高端字体图标技术。 ■增加:Bis增加订单补录功能 ■修复:邮件页面支持name与title字段传参 ■优化:优化调整商品逻辑层 ■增加:管理员,用户AJAX登录,启用加密传输 ■扩展:微信小程序接口,增加安全验证(避免被其他人调用接口),扩展购物车,用户等模块 ■增加:库选字段--下拉选单被遮住Bug,并增加判断,避免JS重复加载 ■增加:库选字段增加筛选功能 ■增加:增加RSA加密方式,用于前端加密传输(暂只用于用户登录页) ■安全:增加AntiXSS插件,专用于处理用户提交的HTML,过滤危险标签 ■修复:商品修改,精品属性丢失Bug ■安全:增强了底层标签模块的安全检测 ■扩展:地图字段,简洁--完全版支持互转 ■增加:扩展虚拟币支持图片凭证 ■增加:用户画像功能 ■扩展:增加最大用户注册数限制 ■扩展:订单打印,增加显示商品购买时价格 ■扩展:用户信息(UserBase)增加移动设备专用页面 ■修复:订单前往付款,状态检测不正确Bug ■扩展:多选项字段,增加省份大学二级联动 ■增加:标签查询数据转换为json功能 { ZL:Json} ■扩展:按需修改当前日期标签 ■扩展:地图增加经玮度定位,增加经玮度显示 ■修复:首页左边栏按钮Bug ■修复:不能迁移到根节点Bug ■扩展:按需修改购物车发票逻辑 ■增加:会员中心管理发票模板功能(最多6个) *购物车购买时,发票信息会自动存为模板 *用户中心可维护发票信息 ■修复:节点删除入回收站Bug(批量删除不入回收站,不显示子节点) ■增加:扩展发票模块,抽取最近的五次不重复的发票数据 ■扩展:增加内容置顶与置顶到期时间字段, ■移除:内容模型已不用的字段(Cast_File,Pronum,ProWeek,BidMoney,BidType,IsBid,OrderClass,ComplianceUserList) ■修复:贴吧图标,与图片解析标签Bug ■增加:内容按用户组设计访问权限 ■扩展:发票增加分类功能 ■扩展:按需改写有问必答模块 ■修复:有问必答--用户中心筛选Bug ■修复:多文件上传,被禁止的上传的文件(exe等危险文件)显示Bug ■扩展:使用新版本Jquery.js(升级到全新的v3.2.1) ■修复:节点链接Bug ■修复:单页--只允许首页生成 ■修复:扩展--运行SQL语句增加二次密码校验 ■扩展:Logo设计,下载图片时会自动添加水印 ■修复:因为特殊字符,导致word无法生成Bug ■按需扩展龙悦云收银模块 ■修复:中文无法输入Bug ■扩展:按需优化POS收银代码,增强稳定性,并可记录异常 ■扩展:支持打印份数,与USB打印机 ■按需扩展金赣物联网远程视频与数据监控模块。 ■增加:PayPal即时到账支付 ■增加:初步重写了CRM模块 ■扩展:增加导入辅助类,用于辅助Excel数据的导入 ■修改:域名归并与强制https,改为301跳转 ■扩展:增加微信带参二维码接口与相关事件处理 ■修复:有问必答--图片附件Bug ■修复:标签--新建数据表,链接错误 ■扩展:商城模块按需扩展 ■扩展:后台新权限验证机制完成迁移 ■修复:手机注册,验证码Bug ■增加:初步确定HoloLens 2D程序开发方式(UWP+WebView)以及3D仿生开发模块,并推出全新的混合现实门户http://pano.z01.com 以及其它重要更新,立即下载,马上获得2018最新最牛最强大的web与移动开发中间件↓ MD5: 210E59B944C26B9BA0CE513ED26AECCE SHA1: 704F7754DC2B30036B993E9F12CDDFBA9BC25F7F CRC32: D58F68C1

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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