Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Java

जावा का उपयोग करके चेकसम लागू करना

जावा का उपयोग करके चेकसम को लागू करने के लिए कोड निम्नलिखित है -

उदाहरण

import java.util.*;
public class Demo{
   public static void main(String args[]){
      Scanner my_scan = new Scanner(System.in);
      System.out.println("Enter the input string ");
      String my_in = my_scan.next();
      int my_checksum = generate_checksum(my_in);
      System.out.println("The checksum that has been generated is " + Integer.toHexString(my_checksum));
      System.out.println("Enter the data that needs to be sent to the receiver ");
      my_in = my_scan.next();
      System.out.println("Enter the checksum that needs to be sent to the receiver ");
      my_checksum = Integer.parseInt((my_scan.next()), 16);
      receive(my_in, my_checksum);
      my_scan.close();
   }
   static int generate_checksum(String s){
      String my_hex_val = new String();
      int x, i, my_checksum = 0;
      for (i = 0; i < s.length() - 2; i = i + 2){
         x = (int) (s.charAt(i));
         my_hex_val = Integer.toHexString(x);
         x = (int) (s.charAt(i + 1));
         my_hex_val = my_hex_val + Integer.toHexString(x);
         System.out.println(s.charAt(i) + "" + s.charAt(i + 1) + " : " + my_hex_val);
         x = Integer.parseInt(my_hex_val, 16);
         my_checksum += x;
      }
      if (s.length() % 2 == 0){
         x = (int) (s.charAt(i));
         my_hex_val = Integer.toHexString(x);
         x = (int) (s.charAt(i + 1));
         my_hex_val = my_hex_val + Integer.toHexString(x);
         System.out.println(s.charAt(i) + "" + s.charAt(i + 1) + " : "+ my_hex_val);
         x = Integer.parseInt(my_hex_val, 16);
      } else {
         x = (int) (s.charAt(i));
         my_hex_val = "00" + Integer.toHexString(x);
         x = Integer.parseInt(my_hex_val, 16);
         System.out.println(s.charAt(i) + " : " + my_hex_val);
      }
      my_checksum += x;
      my_hex_val = Integer.toHexString(my_checksum);
      if (my_hex_val.length() > 4){
         int carry = Integer.parseInt(("" + my_hex_val.charAt(0)), 16);
         my_hex_val = my_hex_val.substring(1, 5);
         my_checksum = Integer.parseInt(my_hex_val, 16);
         my_checksum += carry;
      }
      my_checksum = generate_complement(my_checksum);
      return my_checksum;
   }
   static void receive(String s, int my_checksum){
      int gen_checksum = generate_checksum(s);
      gen_checksum = generate_complement(gen_checksum);
      int syndrome = gen_checksum + my_checksum;
      syndrome = generate_complement(syndrome);
      System.out.println("The value of syndrome is " + Integer.toHexString(syndrome));
      if (syndrome == 0){
         System.out.println("Data has been received without any errors");
      } else {
         System.out.println("An error was encountered in the received data");
      }
   }
   static int generate_complement(int my_checksum){
      my_checksum = Integer.parseInt("FFFF", 16) - my_checksum;
      return my_checksum;
   }
}

इनपुट

sample
sample
b2c8

आउटपुट

Enter the input string
sa : 7361
mp : 6d70
le : 6c65
The checksum that has been generated is b2c8
Enter the data that needs to be sent to the receiver
Enter the checksum that needs to be sent to the receiver
sa : 7361
mp : 6d70
le : 6c65
The value of syndrome is 0
Data has been received without any errors

डेमो नामक एक वर्ग में मुख्य कार्य होता है। यहां, एक स्कैनर उदाहरण परिभाषित किया गया है और एक इनपुट स्ट्रिंग परिभाषित की गई है।

'generate_checksum' फ़ंक्शन परिभाषित किया गया है जो एक नया स्ट्रिंग इंस्टेंस बनाता है और चेकसम को 0 से प्रारंभ करता है। इस फ़ंक्शन को पैरामीटर के रूप में पारित स्ट्रिंग को पुनरावृत्त किया जाता है, और हेक्साडेसिमल मान में परिवर्तित किया जाता है। प्रत्येक वर्ण को पुनरावृत्त किया जाता है और पूर्णांक मान में परिवर्तित किया जाता है। फिर इसे हेक्साडेसिमल मान में बदल दिया जाता है। फिर, हेक्साडेसिमल मान अगले वर्ण के हेक्साडेसिमल मान में जोड़ा जाता है।

यदि स्ट्रिंग की लंबाई सम है, तो प्रत्येक वर्ण को पुनरावृत्त किया जाता है और पूर्णांक मान में परिवर्तित किया जाता है। फिर इसे हेक्साडेसिमल मान में बदल दिया जाता है। फिर, हेक्साडेसिमल मान अगले वर्ण के हेक्साडेसिमल मान में जोड़ा जाता है। अन्यथा, इसे '00' से जोड़ा जाता है।

'प्राप्त' फ़ंक्शन 'generate_checksum' फ़ंक्शन को कॉल करता है और परिणाम पास करता है। फिर इसे मूल चेकसम मान में जोड़ा जाता है (जो कि प्रारंभ में 0 था)। फिर इसे हेक्साडेसिमल मान में बदल दिया जाता है। यदि यह लंबाई 4 से अधिक है, तो एक 'कैरी' मान उत्पन्न होता है। मूल चेकसम को पार्स किया जाता है और 'कैरी' मान में जोड़ा जाता है। एक बार जब यह स्निपेट निष्पादित हो जाता है, तो 'generate_complement' फ़ंक्शन को चेकसम मान पर कॉल किया जाता है। 'generate_complement' फ़ंक्शन चेकसम मान को 'FFFF'-16 से घटा देता है।


  1. जावा का उपयोग करके ओपनसीवी में एक सर्कल कैसे बनाएं?

    Java OpenCV लाइब्रेरी के org.opencv.imgproc पैकेज में Imgproc नाम का एक वर्ग है। एक वृत्त बनाने के लिए आपको सर्कल () . का आह्वान करना होगा इस वर्ग की विधि। यह विधि निम्नलिखित मापदंडों को स्वीकार करती है - एक चटाई वस्तु उस छवि का प्रतिनिधित्व करती है जिस पर वृत्त खींचा जाना है। वृत्त के केंद्र

  1. जावा का उपयोग करके ओपनसीवी में आयत कैसे बनाएं?

    Java OpenCV लाइब्रेरी के org.opencv.imgproc पैकेज में Imgproc नामक एक वर्ग है। एक आयत बनाने के लिए आपको आयताकार () . का आह्वान करना होगा इस वर्ग की विधि। यह विधि निम्नलिखित मापदंडों को स्वीकार करती है - एक मैट वस्तु उस छवि का प्रतिनिधित्व करती है जिस पर आयत खींची जानी है। आयत के शीर्षों को निर

  1. जावा का उपयोग करके ओपनसीवी में एक रेखा कैसे खींचना है?

    Java OpenCV लाइब्रेरी के org.opencv.imgproc पैकेज में Imgproc नामक एक वर्ग है। एक रेखा खींचने के लिए आपको रेखा () . का आह्वान करना होगा इस वर्ग की विधि। यह विधि निम्नलिखित मापदंडों को स्वीकार करती है - एक मैट वस्तु उस छवि का प्रतिनिधित्व करती है जिस पर रेखा खींची जानी है। दो बिंदु वस्तुएं उन ब