Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรม Python Cyclic Redundancy Check (CRC)


CRC ใช้ตรวจสอบข้อผิดพลาดข้อมูลดิจิทัล โดยใช้ binary division เพิ่ม check bits ให้ข้อมูลหารด้วย divisor ลงตัว

ฝั่งส่ง: คำนวณ remainder แนบเป็น codeword
ฝั่งรับ: หาร codeword ด้วย divisor เดียวกัน ถ้า remainder=0 ข้อมูลถูกต้อง

โค้ดตัวอย่าง (ใช้ pycrc library)

from pycrc.crclib import *

# Sender
div = input("Input divisor in binary: ")
dataword = '1001'
sen = Sender(int(dataword, 2), div)
sen.send()
print("codeword:", sen.codeword2)

# Channel
ch = Channel(sen.codeword)
print("Channel codeword:", bin(ch.ch_codeword))

# Receiver
rcv = Receiver(ch.ch_codeword, div)
rcv.receive()
print("syndrome:", rcv.syndrome2)
print("Discard?", rcv.discard)
print("rx_dataword:", rcv.rx_dataword2)

ผลลัพธ์ตัวอย่าง

Sender:
arg_dataword: 1010000000
remainder: 011
codeword: 1010000011
Receiver:
syndrome: 1010000011
Discard or not? N
rx_dataword: 1010000011