c - CheckSum for a struct -
UInt16 चेकसमअपडेट (LOG_ENTRY_TYPE * पॉइंटर, UInt16 आकार) {UChar * डेटा; डेटा = सूचक; UInt16 chk = 0; जबकि (आकार -) {chk + = * डेटा ++; } वापसी chk; } // मेसेज डेटा स्ट्रक्चर टाइपिंगफेप टाइपएफेफ स्ट्रीट {TIMESTAMP_TYPE oTimeStamp; ASSERT_ID_TYPE ucAssertID; इंट 16 iData1; इंट 16 iData2; UInt16 UIChecksum; } LOG_ENTRY_TYPE;
TIMESTAMP_TYPE एक संरचना है जिसमें एक 16 बिट मिलीसेकंड काउंटर और 32 बिट सेकंड काउंटर है और ASSERT_ID_TYPE केवल उन चीजों की एक एन्यूम सूची है, जिन्हें मैं ऑपरेशन में देखना चाहता हूं।
तो इस प्रकार का काम करता है, लेकिन एक बार जब मूल्य 255 से अधिक हो जाता है तो कुछ बुरा हो रहा है। मुझे पता है कि एक अहस्ताक्षरित चार (UChar) 255 तक संख्या का प्रतिनिधित्व कर सकता है, लेकिन अगर मैं UChar को UInt16 में बदलता हूं तो मुझे सही उत्तर नहीं मिलता है क्या कोई मेरी समस्या को यहां बता सकता है?
UInt32 chk = 0; Chk + = डेटा- & gt; iData1; Chk + = डेटा- & gt; iData2;
Comments
Post a Comment