Error Correction Code - CRC


 Error Correction Code - CRC



import java.util.Scanner;


public class CRC {


    static String divide(String data, String generator) {


        char[] Nr = data.toCharArray();

        int Drlen = generator.length();


        for (int i = 0; i <= Nr.length - Drlen; i++) {


            if (Nr[i] == '1') {


                for (int j = 0; j < Drlen; j++) {


                    // XOR

                    Nr[i + j] =

                        (Nr[i + j] == generator.charAt(j))

                        ? '0' : '1';

                }

            }

        }


        return new String(Nr)

                .substring(Nr.length - Drlen + 1);

    }


    public static void main(String[] args) {


        Scanner sc = new Scanner(System.in);


        System.out.print("Enter data bits: ");

        String data = sc.next();


        System.out.print("Enter generator bits: ");

        String generator = sc.next();


        int zeros = generator.length() - 1;


        String newData = data + "0".repeat(zeros);


        String CRC = divide(newData, generator);


        String codeword = data + CRC;


        System.out.println("\n----- Sender Side -----");

        System.out.println("Original Data   : " + data);

        System.out.println("Generator       : " + generator);

        System.out.println("Appended Data   : " + newData);

        System.out.println("CRC             : " + CRC);

        System.out.println("Transmitted Data: " + codeword);


        System.out.println("\n----- Receiver Side -----");


        System.out.print("Enter received data: ");

        String received = sc.next();


        String remainder = divide(received, generator);


        System.out.println("Remainder       : " + remainder);


        if (remainder.equals("0".repeat(zeros)))

            System.out.println("No error detected.");

        else

            System.out.println("Error detected.");


        sc.close();

    }

}

No comments:

Post a Comment

Don't be a silent reader...
Leave your comments...

Anu