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

जावा में चेकसम लागू करना


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

उदाहरण

import java.util.*; public class Demo {     public static void main(String args[]) {       Scanner my_scan = new Scanner(System.in);       System.out.println("इनपुट स्ट्रिंग दर्ज करें");       String my_in = my_scan.next();       int my_checksum = generate_checksum(my_in);       System.out.println("जनरेट किया गया चेकसम है " + Integer.toHexString(my_checksum));       System.out.println("वह डेटा दर्ज करें जिसे रिसीवर को भेजना है");       my_in = my_scan.next();       System.out.println("वह चेकसम दर्ज करें जिसे रिसीवर को भेजना है");       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("सिंड्रोम का मान है " + Integer.toHexString(syndrome));       if (syndrome == 0) {           System.out.println("डेटा बिना किसी त्रुटि के प्राप्त हो गया है");       } else {           System.out.println("प्राप्त डेटा में एक त्रुटि आई है");       }     }     static int generate_complement(int my_checksum) {       my_checksum = Integer.parseInt("FFFF", 16) - my_checksum;       return my_checksum;     } }

इनपुट

sample sample b2c8

आउटपुट

इनपुट स्ट्रिंग दर्ज करें sa : 7361 mp : 6d70 le : 6c65 जनरेट किया गया चेकसम है b2c8 वह डेटा दर्ज करें जिसे रिसीवर को भेजना है वह चेकसम दर्ज करें जिसे रिसीवर को भेजना है sa : 7361 mp : 6d70 le : 6c65 सिंड्रोम का मान है 0 डेटा बिना किसी त्रुटि के प्राप्त हो गया है

Demo नामक एक क्लास में मुख्य फंक्शन होता है। यहां, एक Scanner इंस्टेंस परिभाषित किया गया है और एक इनपुट स्ट्रिंग परिभाषित की गई है।

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

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

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


  1. Java में OpenCV का उपयोग करके वृत्त कैसे बनाएं? Java में OpenCV का उपयोग करके वृत्त कैसे बनाएं?

    Java OpenCV लाइब्रेरी का org.opencv.imgproc पैकेज Imgproc नामक एक क्लास प्रदान करता है।वृत्त बनाने के लिए, आपको इस क्लास की circle() मेथड को कॉल करना होगा। यह मेथड निम्नलिखित पैरामीटर्स स्वीकार करती है −एक Mat ऑब्जेक्ट जो उस इमेज को दर्शाता है जिस पर वृत्त बनाया जाना है।एक Point ऑब्जेक्ट जो वृत्त के

  1. Java में OpenCV का उपयोग करके आयत कैसे बनाएं? Java में OpenCV का उपयोग करके आयत कैसे बनाएं?

    Java OpenCV लाइब्रेरी का org.opencv.imgproc पैकेज Imgproc नामक एक क्लास प्रदान करता है। आयत बनाने के लिए, आपको इस क्लास की rectangle() मेथड को कॉल करना होगा। यह मेथड निम्नलिखित पैरामीटर्स स्वीकार करती है −एक Mat ऑब्जेक्ट जो उस इमेज को दर्शाता है जिस पर आयत बनाया जाना है।दो Point ऑब्जेक्ट जो बनाए जान

  1. Java में OpenCV का उपयोग करके रेखा कैसे बनाएं? Java में OpenCV का उपयोग करके रेखा कैसे बनाएं?

    Java OpenCV लाइब्रेरी का org.opencv.imgproc पैकेज Imgproc नामक एक क्लास प्रदान करता है। रेखा बनाने के लिए, आपको इस क्लास की line() मेथड को कॉल करना होगा। यह मेथड निम्नलिखित पैरामीटर्स स्वीकार करती है −एक Mat ऑब्जेक्ट जो उस इमेज को दर्शाता है जिस पर रेखा बनाई जानी है।दो Point ऑब्जेक्ट जो उन बिंदुओं क