当前位置: 首页 > news >正文

学习网站建设要报班吗广告平台投放

学习网站建设要报班吗,广告平台投放,宜宾建设网,小程序开发多少钱C语言CRC-16 IBM格式校验函数 CRC-16校验产生2个字节长度的数据校验码#xff0c;通过计算得到的校验码和获得的校验码比较#xff0c;用于验证获得的数据的正确性。基本的CRC-16校验算法实现#xff0c;参考#xff1a; C语言标准CRC-16校验函数。 不同厂家通过对输入数…C语言CRC-16 IBM格式校验函数 CRC-16校验产生2个字节长度的数据校验码通过计算得到的校验码和获得的校验码比较用于验证获得的数据的正确性。基本的CRC-16校验算法实现参考 C语言标准CRC-16校验函数。 不同厂家通过对输入数据前处理和输出数据后处理的方式不同又产生了不同的厂家校验函数这里介绍IBM格式的CRC-16校验函数。IBM格式对输入数据按照单个字节进行位反序。对于输出的校验码进行整体位反序。 正向算法 正向算法是符合标准CRC-16的计算理论从左向右计算也即计算过程中移位时向左移出。几种正向算法的实现如下 CRC-16 IBM格式校验函数一(8位输入数据格式64位装载计算) #include stdio.h #include stdlib.h uint16_t PY_CRC_16_IBM(uint8_t *di, uint32_t len) {uint32_t crc_poly 0x00018005; //X^16X^15X^21 total 17 effective bits. Computed total data shall be compensated 16-bit 0 before CRC computing.uint8_t *datain;uint64_t cdata 0; //Computed total datauint32_t data_t 0; //Process data of CRC computinguint16_t index_t 63; ///bit shifting index for initial 1 searchinguint16_t index 63; //bit shifting index for CRC computinguint8_t rec 0; //bit number needed to be compensated for next CRC computinguint32_t cn(len2)/6;uint32_t cr(len2)%6;uint32_t j;datain malloc(len2);for(j0;jlen;j){datain[j] 0;for(uint8_t m0; m7; m){datain[j] | ( ( di[j](7-m) ) 1 ) m;}}datain[len] 0; datain[len1] 0;//Compensate 16-bit 0 for input dataif(len6) //Mount data for only one segment{for(j0;j(len1);j){cdata (cdata8);cdata cdata|datain[j];}cn 1;}else{if(cr0){cr 6;}else if(cr1){cr 7;}else if(cr2){cr 8;}else{cn;}for(j0;jcr;j){cdata (cdata8);cdata cdata|datain[j];}}do{cn--;while(index_t0){if( (cdataindex_t)1 ){index index_t;index_t 0;data_t | (cdata(index-16));{data_t data_t ^ crc_poly;}while((index!0x5555)(index!0xaaaa)){for(uint8_t n1;n17;n){if ((data_t(16-n))1) {rec n;break;}if (n16) rec17;}if((index-16)rec){data_t data_t(index-16);data_t | (uint32_t)((cdata(64-(index-16)))(64-(index-16)));index 0x5555;}else{for(uint8_t i1;irec;i){data_t (data_t1)|((cdata(index-16-i))1) ;}if(rec! 17){data_t data_t ^ crc_poly;index - rec;}else{data_t 0;index_t index-16-1;index 0xaaaa;}}}if(index0x5555) break;}else{index_t--;if(index_t16) break;}}if(cn0) //next segment{cdata data_t0x00ffff;for(uint8_t k0;k6;k){cdata (cdata8);cdata cdata|datain[j];}data_t 0;index_t 63; ///bit shifting index for initial 1 searchingindex 63; //bit shifting index for CRC computingrec 0; //bit number needed to be compensated for next CRC computing}}while(cn0);free(datain);uint16_t i_data_t 0;for(uint8_t n0; n15; n){i_data_t | ( ( data_t(15-n) ) 1 ) n;}return i_data_t; }CRC-16 IBM格式校验函数二8位输入数据格式 uint16_t PY_CRC_16_S_IBM(uint8_t *di, uint32_t len) {uint16_t crc_poly 0x8005; //X^16X^15X^21 total 16 effective bits without X^16. Computed total data shall be compensated 16-bit 0 before CRC computing.uint32_t clen len2;uint8_t cdata[clen] ;for(uint32_t j0;jlen;j){cdata[j] 0;for(uint8_t m0; m7; m){cdata[j] | ( ( di[j](7-m) ) 1 ) m;}}cdata[len]0; cdata[len1]0;uint16_t data_t (((uint16_t)cdata[0]) 8) cdata[1]; //CRC registerfor (uint32_t i 2; i clen; i){for (uint8_t j 0; j 7; j){if(data_t0x8000)data_t ( (data_t1) | ( (cdata[i](7-j))0x01) ) ^ crc_poly;elsedata_t ( (data_t1) | ( (cdata[i](7-j))0x01) ) ;}}uint16_t i_data_t 0;for(uint8_t n0; n15; n){i_data_t | ( ( data_t(15-n) ) 1 ) n;}return i_data_t; }CRC-16 IBM格式校验函数三16位输入数据格式 uint16_t PY_CRC_16_T16_IBM(uint16_t *di, uint32_t len) {uint16_t crc_poly 0x8005; //X^16X^15X^21 total 16 effective bits without X^16. Computed total data shall be compensated 16-bit 0 before CRC computing.uint16_t data_t 0; //CRC registeruint16_t cdata[len];for(uint32_t j0;jlen;j){cdata[j] 0;for(uint8_t m0; m7; m){cdata[j] | ( ( ( (di[j]8)(7-m) ) 1 ) m ) | ( ( ( ( (di[j]0x00ff)(7-m) ) 1 ) m ) 8 );}}for(uint32_t i 0; i len; i){data_t ^ cdata[i]; //16-bit datafor (uint8_t j 0; j 16; j){if (data_t 0x8000)data_t (data_t 1) ^ crc_poly;elsedata_t 1;}}uint16_t i_data_t 0;for(uint8_t n0; n15; n){i_data_t | ( ( data_t(15-n) ) 1 ) n;}return i_data_t; }CRC-16 IBM格式校验函数四8位输入数据格式 uint16_t PY_CRC_16_T8_IBM(uint8_t *di, uint32_t len) {uint16_t crc_poly 0x8005; //X^16X^15X^21 total 16 effective bits without X^16. Computed total data shall be compensated 16-bit 0 before CRC computing.uint16_t data_t 0; //CRC registeruint8_t cdata[len];for(uint32_t j0;jlen;j){cdata[j] 0;for(uint8_t m0; m7; m){cdata[j] | ( ( di[j](7-m) ) 1 ) m;}}for(uint32_t i 0; i len; i){data_t ^ cdata[i]8; //8-bit datafor (uint8_t j 0; j 8; j){if (data_t 0x8000)data_t (data_t 1) ^ crc_poly;elsedata_t 1;}}uint16_t i_data_t 0;for(uint8_t n0; n15; n){i_data_t | ( ( data_t(15-n) ) 1 ) n;}return i_data_t; }反向算法 反向算法是从由右向左计算也即计算过程中移位时向右移出。而计算过程中的输入数据高优先计算位和校验参数的对齐关系不变。因此把一个字节放在CRC计算寄存器的最低字节时对于IBM格式最右侧最低位实际上是高优先计算位而校验参数要相应倒序从而计算位置对照关系不变。 CRC-16 IBM格式校验函数五反向算法8位输入数据格式 uint16_t PY_CRC_16_T8_IBM_i(uint8_t *di, uint32_t len) {uint16_t crc_poly 0xA001; //Bit sequence inversion of 0x8005uint16_t data_t 0; //CRC registerfor(uint32_t i 0; i len; i){data_t ^ di[i]; //8-bit datafor (uint8_t j 0; j 8; j){if (data_t 0x0001)data_t (data_t 1) ^ crc_poly;elsedata_t 1;}}return data_t; }算法验证 5种算法结果相同 通过在线CRC工具对照验证成功 –End–
http://www.dnsts.com.cn/news/278054.html

相关文章:

  • 开发定制网站山西优化公司
  • 网站建设预算方案模板电子商务系统规划方案
  • 旅游网站html5代码模板蚌埠seo推广
  • 上海做网站好的公司东莞网站设计建设
  • 婚纱网站建设微信群做网站用哪几个端口 比较好
  • 粘合剂东莞网站建设做网站需要的程序
  • 上上上海网站设计wordpress 管理地址
  • 做网站怎么看效果企业年报系统官网入口
  • 河北网站建设就业考试骨干校建设验收网站
  • 淄博品质网站建设最近国际重大新闻事件2022
  • 中科院网站建设wordpress自助友链
  • 注释网站开发wordpress数据库有多大
  • 做图在哪个网站上找销售外包合同
  • wordpress建站seo网站做多大尺寸
  • 网站怎么做才算精致wordpress 大学
  • 柳州住房和城乡建设局网站下载网站源码
  • 咸阳网站开发公司地址全媒体网站的建设方案
  • 做酒店网站所用到的算法wordpress建站网页无法运
  • 做一个学校网站台州网站建设方案托管
  • 建筑设计网站素材网站建设网站开发
  • wordpress评论通知站长有哪些网络平台
  • 学做网站的书地址二地址三2021变更
  • it培训机构培训多久东莞seo建站公司哪家好
  • 外贸网站建设招聘的网页设计培训班
  • 个人网站备案下载站网站怎样免费推广
  • 公司建一个网站多少钱宁夏建设局官方网站
  • 自贡网站制作网站域名续费
  • 响应式 学校网站模板自动生成作文网站
  • 专做装修的网站经典广告推广词
  • 买一个网站服务器多少钱软件工程师薪资