Python 程序进行循环冗余校验
CRC 用于检测数字数据中的错误,这是一种检测传输错误的好技术。此技术主要应用二进制除法。
在这些技术中,存在循环冗余校验位,即冗余位序列,这些位附加到数据单元末尾,使所得数据单元可以被第二个预先确定的二进制数恰好整除。
在目标端,传入数据除以相同数字,如果没有余数,则认为数据正确并且可以接受。
余数表示传输过程中发生了一些事情,数据单元已损坏。因此,该数据单元不被接受。
示例代码
frompycrc.crclib import * def main(): #----------------------------------------------------------------------------- #Sender Side div = str(input("Input divisor in binary type: ")) #user_dataword = str(raw_input("Input dataword in binary type: ")) userdataword = '1001' print ("\nSender:") sen = Sender(bin2dec(userdataword), div) sen.send() print ("arg_dataword:", sen.arg_dataword2) print ("remainder:", sen.remainder2) print ("codeword:", sen.codeword2) #----------------------------------------------------------------------------- #Channel print ("\nChannel:") ch = Channel(sen.codeword) print ("Through to the channel get channel codeword:", dec2bin(ch.ch_codeword)) #----------------------------------------------------------------------------- #Receiver Side print ("\nReceiver:") rcv = Receiver(ch.ch_codeword, div) rcv.receive() print ("syndrome:", rcv.syndrome2) print ("Discard or not?", rcv.discard) print ("rx_dataword:", rcv.rx_dataword2) if __name__ == '__main__': main()
输出
Sender Input dataword in binary type 1010000 arg_dataword:1010000000 remainder: 011 codeword:1010000011 Receiver syndrome:1010000011 Discard or not? N rx_dataword:1010000011
广告