जावा का उपयोग करके चेकसम लागू करने का कोड निम्नलिखित है:
उदाहरण
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 से घटाता है।