Python 程序进行循环冗余校验


CRC 用于检测数字数据中的错误,这是一种检测传输错误的好技术。此技术主要应用二进制除法。

在这些技术中,存在循环冗余校验位,即冗余位序列,这些位附加到数据单元末尾,使所得数据单元可以被第二个预先确定的二进制数恰好整除。

在目标端,传入数据除以相同数字,如果没有余数,则认为数据正确并且可以接受。

余数表示传输过程中发生了一些事情,数据单元已损坏。因此,该数据单元不被接受。

Cyclic Redundancy Check

示例代码

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

更新于: 30-Jul-2019

6K+ 浏览

开启你的 职业 生涯

完成该课程即可获得认证

立即开始
广告