एक निर्दिष्ट संचार मानक आरटीसीएम एससी 104 3.1 के लिए, मुझे डेटा को 12 बिट डेटा सेगमेंट की एक जोड़ी के रूप में बाइट्स में विभाजित करने की आवश्यकता है। तो किसी दिए गए संदेश के लिए मुझे पहले बाइट और दूसरे बाइट के आधे पर संदेश प्रकार संख्या रखने की आवश्यकता है। तो मुझे दूसरे बाइट के आधे हिस्से में एक आईडी पूर्णांक शुरू करने की आवश्यकता है और तीसरे बाइट जारी रखें। 20 बिट, 5 बिट, और अन्य आकारों में अनिवार्य रूप से 0 की कटौती करने वाले संदेश के अंत में इस प्रकार का पैटर्न जारी रहता है जो आमतौर पर पूर्णांक मानों के एमएसबी अंत को भर देगा।एक पूर्णांक के एक बाइट तक कैसे पहुंचता है?
मैंने स्पष्ट परिभाषा नहीं देखी है, लेकिन मुझे लगता है कि इसे बिट बाइट ऑर्डर में जाना चाहिए ताकि बिट्स की प्रतिलिपि बनाने से पहले मुझे स्मृति में अपने पूर्णांक को उलटना होगा। मैं अभी भी सीपीपी के लिए काफी नया हूं और सोच रहा हूं कि मैं व्यक्तिगत बाइट्स को मेमोरी में पूर्णांक बनाने के लिए कैसे प्राप्त करूं? अगर मैं बाइट्स तक पहुंच सकता हूं तो मैं बिटवाई का उपयोग कर सकता हूं या बिट्स को 2 बाइट्स से संदेश के लिए विभाजित कर सकता हूं।
यहाँ डेटा जोड़ने से पहले संदेश के निर्माण की शुरुआत है:
//build message 1002 gps 00111110 1010
char buf1002[BUFFERSIZE];
buf1002[0] = 0x3E; //00111110
buf1002[1] = 0xA0; //10100000
//ref station id 12 bits of 16
//ex unsigned short m = 1100;
//m would be byte2 00000100 byte1 01001100
//buf1002[1] would be 10100100
//buf1002[2] would be 01001100
//reverse bit order for network after building?
संदर्भ स्टेशन एक अहस्ताक्षरित कम है, इसलिए एक 2 बाइट पूर्णांक से किया जाएगा। तो मैं इससे एक बाइट पढ़ने के बारे में कैसे जा सकता हूं? क्या मैं एक मेमोरी लोकेशन पॉइंटर से शुरू करता हूं? यदि हां तो क्या?
किसी भी मदद की सराहना की जाएगी।
यहां पहला जवाब पढ़ें http://stackoverflow.com/questions/47981/how-do-you-set-clear-and-toggle-a-single-bit-in-c –
* "संदर्भ स्टेशन एक हस्ताक्षरित शॉर्ट से हो, तो एक 2 बाइट पूर्णांक। "* एक छोटा सा बाइट होना आवश्यक नहीं है (हालांकि यह अब तक का सबसे आम मामला है), यह * कम से कम * 16 बिट्स पर होना आवश्यक है। आप इस मामले को मजबूर करने के लिए 'uint16_t' का उपयोग कर सकते हैं। – dmckee