Python筆記-CRC循環(huán)冗余校驗的編程實現_第1頁
Python筆記-CRC循環(huán)冗余校驗的編程實現_第2頁
Python筆記-CRC循環(huán)冗余校驗的編程實現_第3頁
免費預覽已結束,剩余1頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Python循環(huán)冗余校驗的編程實現章錄、介紹、算法思想在輸的時候是直接輸的成多項式,我們在計算CRC 校驗碼的時候需要將成多項式轉換成對應的進制串。轉換的式如下圖( ,成多項式的 相當于)X0 x4x4次1先將傳的數據進寫轉換,以便之后的處理由于成多項式的最右側必定為1 ,所以定義個變量string 直接初始化為列表的最后個元素將列表的最后個元素刪除,并對列表進逆序(1 )遍歷列表 lis如果 string 的長度和 X3 中的數字值相同時,就表該位的進制為1如果 string 遍歷到 X3 卻只有 1 位的長度時,就說明當前遍歷到了X0 的位置,但 X2 是不存在成多項式中的,所以需要使個循

2、環(huán)補全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、要個循環(huán)同時遍歷這兩個字符串如果對應的進制不同時,就為結果字符串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、貍# 題:循環(huán)冗余校驗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. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論