Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

मैं सी ++ में बड़े-एंडियन और छोटे-एंडियन मानों के बीच कैसे परिवर्तित करूं?

यहां हम देखेंगे कि C++ में लिटिल एंडियन वैल्यू को बिग एंडियन या बिग एंडियन वैल्यू को लिटिल एंडियन में कैसे बदलें। वास्तविक चर्चा में जाने से पहले, हम देखेंगे कि बड़ा एंडियन और छोटा एंडियन क्या है?

विभिन्न आर्किटेक्चर में, मल्टी-बाइट डेटा को दो अलग-अलग तरीकों से संग्रहीत किया जा सकता है। कभी-कभी उच्च क्रम के बाइट्स को पहले संग्रहीत किया जाता है, उस स्थिति में इन्हें बड़े एंडियन के रूप में जाना जाता है, और कभी-कभी निचले क्रम के बाइट्स को पहले संग्रहीत किया जाता है, फिर इसे थोड़ा एंडियन कहा जाता है।

उदाहरण के लिए, यदि संख्या 0x9876543210 है, तो बड़ा एंडियन होगा -

मैं सी ++ में बड़े-एंडियन और छोटे-एंडियन मानों के बीच कैसे परिवर्तित करूं?

नन्हा एंडियन ऐसा होगा -

मैं सी ++ में बड़े-एंडियन और छोटे-एंडियन मानों के बीच कैसे परिवर्तित करूं?

इस भाग में हम देखेंगे कि छोटे एंडियन को बड़े एंडियन में कैसे बदला जाए और इसके विपरीत। ऐसा करने के लिए हमें 1 और 4 बाइट्स, और 2 और 3 बाइट्स को इंटरचेंज करना होगा। हम तार्किक अभिव्यक्तियों का उपयोग करके उनका आदान-प्रदान कर सकते हैं। चार बार नंबर की कॉपी बनाएं, फिर पहली कॉपी के लिए, पहली बाइट को 24 बार दाईं ओर शिफ्ट करें, दूसरी कॉपी के लिए, इसे 00FF0000 से मास्क करें, फिर 8 बिट्स को दाईं ओर स्वैप करें, तीसरी कॉपी के लिए इसे 0000FF00 से मास्क करें। , फिर बाईं ओर 8 बिट्स को शिफ्ट करें, और अंतिम कॉपी के लिए तत्वों को 24 बार बाईं ओर स्वैप करें। फिर तार्किक रूप से या इन चार प्रतियों को उल्टा परिणाम प्राप्त करने के लिए।

उदाहरण

#include <iostream>
#define SWAP_INT32(x) (((x) >> 24) | (((x) & 0x00FF0000) >> 8) | (((x) & 0x0000FF00) << 8) | ((x) << 24)) using namespace std;
void memory_represent(char *value, int n) {
   int i;
   for (i = 0; i < n; i++)
      printf(" %.2x", value[i]);
}
int main() {
   unsigned int x = 0x9876543210;
   int y;
   cout << "The little endian value is: ";
   memory_represent((char*)&x, sizeof(x));
   cout << endl;
   y = SWAP_INT32(x);
   cout << "The Big endian value after conversion is: ";
   memory_represent((char*)&y, sizeof(y));
   cout << endl;
}

आउटपुट

The little endian value is: 10 32 54 76
The Big endian value after conversion is: 76 54 32 10

  1. सी ++ में फ्लोट और डबल की तुलना कैसे करें?

    फ्लोट्स और डबल वेरिएबल्स की तुलना करना इस बात पर निर्भर करता है कि आपका अंतिम लक्ष्य क्या है। यदि आप विवरण में बहुत अधिक जाने के बिना एक रन करने योग्य फ़ंक्शन चाहते हैं और कुछ गलत गणनाओं में कोई समस्या नहीं होगी, तो आप निम्न फ़ंक्शन का उपयोग कर सकते हैं - उदाहरण #include<iostream> using namesp

  1. सी ++ और सी # के बीच अंतर

    C++ एक सांख्यिकीय रूप से टाइप की गई, संकलित, सामान्य-उद्देश्य, केस-संवेदी, फ्री-फॉर्म प्रोग्रामिंग भाषा है जो प्रक्रियात्मक, वस्तु-उन्मुख और सामान्य प्रोग्रामिंग का समर्थन करती है। C++ को एक मध्य-स्तरीय भाषा के रूप में माना जाता है, क्योंकि इसमें उच्च-स्तरीय और निम्न-स्तरीय भाषा सुविधाओं दोनों का स

  1. एक्सेल में हेक्टेयर और एकड़ के बीच की कोशिकाओं को कैसे बदलें

    एकड़ और हेक्टेयर भूमि क्षेत्रों का वर्णन करते समय आमतौर पर उपयोग किए जाने वाले उपाय हैं। जबकि क्षेत्र के लिए मीट्रिक इकाई वर्ग किमी है, विशेष रूप से कृषि भूमि के लिए भूमि क्षेत्र की गणना के लिए एकड़ और हेक्टेयर को प्राथमिकता दी जाती है। यदि आप Microsoft Excel . में हेक्टेयर और एकड़ के बीच के सेल को