के लिए बिग एंडियन और लिटिल एंडियन समर्थन हमें 3 हार्डवेयर प्लेटफ़ॉर्म - विंडोज (थोड़ा एंडियन) और लिनक्स एंबेडेड (बड़ा और छोटा एंडियन) का समर्थन करने की आवश्यकता है। हमारी डेटा स्ट्रीम उस मशीन पर निर्भर है जो इसका उपयोग करती है और डेटा को बिट फ़ील्ड में टूटा जाना आवश्यक है।बाइट एंडिंग
मैं विवरण को दूर करने के लिए एक एकल मैक्रो (यदि संभव हो) लिखना चाहता हूं। लिनक्स पर मैं लिटिल एंडियन रूपांतरणों के लिए bswap_16
/bswap_32
/bswap_64
का उपयोग कर सकता हूं।
हालांकि, मुझे यह मेरे विजुअल सी ++ में नहीं मिल रहा है।
क्या दोनों प्लेटफार्मों (विंडोज़ और लिनक्स) के लिए एक सामान्य अंतर्निहित है?
यदि नहीं, तो मैं बाइट स्वैपिंग करने के लिए विजुअल सी ++ में क्या उपयोग कर सकता हूं (इसे स्वयं लिखने के अलावा - कुछ मशीन ऑप्टिमाइज़ किए गए ऑप्टिमाइज़ की उम्मीद है)?
धन्यवाद।
वे कार्य किसी भी ओएस के लिए अपेक्षाकृत सार्वभौमिक हैं जो नेटवर्क (यानी इंटरनेट) को समझते हैं। कुछ सबसे आधुनिक ओएस। –
ध्यान दें कि 'यूनियन' का उपयोग करके उनके उदाहरण कार्यान्वयन को काम करने की गारंटी नहीं है। –
हां, आप सही हैं संघों को पैक किया जाना चाहिए। इस पर ध्यान दिलाने के लिए धन्यवाद। कृपया मेरे उत्तर में अपडेट देखें। @SimonRichter – alk