Python笔记-CRC循环冗余校验的编程实现_第1页
Python笔记-CRC循环冗余校验的编程实现_第2页
Python笔记-CRC循环冗余校验的编程实现_第3页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Python循环冗余校验的编程实现章录、介绍、算法思想在输的时候是直接输的成多项式,我们在计算CRC 校验码的时候需要将成多项式转换成对应的进制串。转换的式如下图( ,成多项式的 相当于)X0 x4x4次1先将传的数据进写转换,以便之后的处理由于成多项式的最右侧必定为1 ,所以定义个变量string 直接初始化为列表的最后个元素将列表的最后个元素删除,并对列表进逆序(1 )遍历列表 lis如果 string 的长度和 X3 中的数字值相同时,就表该位的进制为1如果 string 遍历到 X3 却只有 1 位的长度时,就说明当前遍历到了X0 的位置,但 X2 是不存在成多项式中的,所以需要使个循

2、环补全X2 位置 0 ,由于之后需要在当前位置补1 ,则需要补 0 的个数为 len(lisi1)-len(string)-1#输数据处理expression =expression.upper() #写转换lis =list(expression.split(+) #以加号为标志进分割#多项式末尾的数字1#进制转换if len(string)=int(1): #满位数与变量的数字相同时for j in range(int(1)-len(string): #0补全相差的位数return string:-1则需要对输的数据进处理,添加较进制串的部0 使得两个进制串位数相同。这样在异或运算时,只需

3、要个循环同时遍历这两个字符串如果对应的进制不同时,就为结果字符串result 的末尾添 1 ,否则添 0最后输出的时候先遍历结果result ,如果遇到第个有效数据时,就将当前位置及其之后的字符串以切的式进返回。(0 )#输数据处理if len(string1)len(string2): #若后者的位数不时for i in range(len(string1)-len(string2): #string2的位补0string2 =0 +string2# print(string1,string2)#异或计算result +=1else:result +=0# print(result)#输出数

4、据处理for i in range(len(result): #消除异或结果中的效0if result=1: #找到第个有效数据时return result:return result在 CRC函数中,先使个新的变量bin_expression 保存成多项式转换后的进制串在计算时需要先在数据string 末尾添加指定个数的0 , 0 的个数等于多项式中的最次。由于在将多项式转换为进制时将会多出来位,所以添加0 的个数就是 len(bin_expression)-1然后遍历进制数据由于在校验码成的过程中会删除前置0 ,所以需要补 0 的操作( 0,保险起见还是加了上去)#输数据处理bin_exp

5、ression =TurnBin(expression) #转换为进制串for i in range(len(bin_expression)-1): #在进制串末尾补0string +=0for i in range(len(string): #遍历被除数进制串crc +=stringif len(crc)=len(bin_expression): #当位数够异或计算时crc =(crc,bin_expression)# print(crc)#输出数据处理if len(crc)len(bin_expression)-1: #crc位数过多时crc =crclen(crc)-len(bin_ex

6、pression)+1: #切,消除部多余的0return crc在检验 CRC的步骤使的是之前的CRC函数传的成多项式同样需要经过进制转换,传进制串数据的末尾是对应的校验码。计算 CRC校验码时,切的范围为0len(string)-len(bin_expression)+1 计算出来校验码后,就将计算出来的crc 与原始数据的 right_crc 进对如果两个校验码相同,则表数据传输正常。如果两个校验码不同,则表数据传输出错。def CheckCRC(string,expression): #检测传输数据是否正确,并打印结果#输数据处理bin_expression =TurnBin(expr

7、ession)right_crc =stringlen(string)-len(bin_expression)+1: #原数据末尾的crc校验码#CRC计算crc =(string:len(string)-len(bin_expression)+1:,expression)if right_crccrc: #当尾部的校验码,与部数据成的校验码致时print(.)print(,crc)print(,right_crc)剩下的代码属于主函数中界的设计部分,就不详细介绍了三、代码再变更进制数据的某些位,并在数据末尾添加原本数据产的CRC校验码进检测将原始数据添加上对应的校验码进检测CRC# 作者:狐

8、狸# 题:循环冗余校验def TurnBin(expression):#输数据处理expression =expression.upper() #写转换lis =list(expression.split(+) #以加号为标志进分割#多项式末尾的数字1#进制转换for i in range(len():if len(string)=int(1): #满位数与变量的数字相同时string +=1else:for j in range(int(1)-len(string): #0补全相差的位数1result =#输数据处理if len(string1)len(string2): #若后者的位数不时

9、string2 =0 +string2# print(string1,string2)#异或计算#输出数据处理for i in range(len(result): #消除异或结果中的效0if result=1: #找到第个有效数据时return result:#输数据处理bin_expression =TurnBin(expression) #转换为进制串for i in range(len(bin_expression)-1): #在进制串末尾补0string +=0for i in range(len(string): #遍历被除数进制串crc +=stringif len(crc)=l

10、en(bin_expression): #当位数够异或计算时crc =(crc,bin_expression)# print(crc)#输出数据处理if len(crc)len(bin_expression)-1: #crc位数过多时crc =crclen(crc)-len(bin_expression)+1: #切,消除部多余的0return crcdef CheckCRC(string,expression): #检测传输数据是否正确,并打印结果#输数据处理bin_expression =TurnBin(expression)right_crc =stringlen(string)-len(bin_expression)+1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论