Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

순환 중복 검사를 위한 Python 프로그램

<시간/>

디지털 데이터의 오류를 감지하기 위해 CRC가 사용되며, 이는 전송 오류를 감지하는 데 좋은 기술입니다. 이 기술에서는 주로 이진 나누기가 적용됩니다.

이 기술에서는 일련의 중복 비트인 순환 중복 검사 비트가 존재하며 이 비트는 결과 데이터 단위가 미리 결정된 이진수인 초로 정확히 나눌 수 있도록 데이터 단위 끝에 추가됩니다.

대상 측에서 수신 데이터를 동일한 숫자로 나누고 나머지가 없으면 데이터가 정확하고 수락할 준비가 된 것으로 가정합니다.

나머지는 전환 중에 어떤 일이 발생하여 데이터 단위가 손상되었음을 나타냅니다. 따라서 이 데이터 단위는 허용되지 않습니다.

순환 중복 검사를 위한 Python 프로그램

예시 코드

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