Horizontal Redundancy Check (HRC) Code Generation and Error Detection | Python
In this we are going to see Horizontal Redundancy Check, code generation and error detection using python.

input_data = input("\nEnter the Binary Data Sequence: ")
input_data = input_data.split()
input_data = [int(i) for i in input_data]
n = int(input('Enter The length of HRC Bits: '))


def convertToList(data):
    values = []
    for i in range(len(data)):
        value = int(data[i])
        values.append(value)
    return values


def convertToString(T):
    st = ''
    for i in range(len(T)):
        value = str(T[i])
        st = st + value
    return st


def divideData(data):
    emp = []
    if len(data) % n == 0:
        x1 = list(data)
        for i in range(0, len(data), n):
            data = i
            emp.append(x1[data:data + n])
        return emp
    else:
        a1 = len(data) - n
        a = n - a1
        a2 = len(data) + a
        x2 = data.zfill(a2)
        return divideData(x2)


def calculateHRC(data):
    dataCopy = data.copy()
    list1 = [0]*n
    a1 = []
    for i in range(len(dataCopy)):
        list2 = dataCopy[i]
        a1 = a1 + list2
        list2 = convertToList(list2)
        parity = list(a ^ b for a, b in zip(list1, list2))
        list1 = parity
    emp1 = a1 + list1
    print("\nThe HRC Parity Bit is : " + convertToString(list1))
    T = convertToList(emp1)
    return T


def checkParity(data):
    check = [0]*n
    for i in range(len(data)):
        a3 = data[i]
        check = list(a ^ b for a, b in zip(check, a3))
    return check, len(check)


Data = divideData(input_data)
transmittedData = calculateHRC(Data)
print('\nTransmitted code is: ', convertToString(transmittedData))
print('--'*25)

receivedData = list(input('\nEnter the Recieved Code: '))
receivedData = convertToList(receivedData)
new = divideData(receivedData)
a, b = checkParity(new)


if [0]*b == a:
    print('\nNo error')
    T1 = receivedData[:-b]
    print('\nThe data is', convertToString(T1))

else:
    print('\nError Detected')

print('--'*25)

#ENJOY CODING


Post a Comment

FOR ANY DOUBTS AND ERRORS FEEL FREE TO ASK. YOUR DOUBTS WILL BE ADDRESSED ASAP

Previous Post Next Post