Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình Python kiểm tra dư thừa tuần hoàn (Cyclic Redundancy Check)


Để phát hiện lỗi dữ liệu số, CRC được dùng, đây là kỹ thuật tốt phát hiện lỗi truyền. Kỹ thuật này chủ yếu áp dụng phép chia nhị phân.

Trong kỹ thuật này, bit kiểm tra CRC là dãy bit dư thừa, các bit này được nối vào cuối đơn vị dữ liệu để đơn vị dữ liệu kết quả chia hết cho một số nhị phân thứ hai xác định trước.

Ở phía đích, dữ liệu đến được chia cho cùng số đó, nếu không có dư thì coi dữ liệu đúng và chấp nhận.

Dư khác 0 cho thấy có sự cố trong truyền, đơn vị dữ liệu bị hỏng. Do đó đơn vị dữ liệu không được chấp nhận.

Chương trình Python kiểm tra dư thừa tuần hoàn (Cyclic Redundancy Check)

Ví dụ mã

from pycrc.crclib import *

def main():
    # Sender Side
    div = str(input("Input divisor 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()

Kết quả

Sender
Input dataword in binary type 1010000
arg_dataword:1010000000
remainder: 011
codeword:1010000011
Receiver
syndrome:1010000011
Discard or not? N
rx_dataword:1010000011