কম্পিউটার

আমি কিভাবে C++ এ বড়-এন্ডিয়ান এবং লিটল-এন্ডিয়ান মানগুলির মধ্যে রূপান্তর করব?


এখানে আমরা C++ এ কিভাবে Little endian ভ্যালুকে Big endian বা big endian value এ Little endian-এ রূপান্তর করতে হয় তা দেখব। প্রকৃত আলোচনায় যাওয়ার আগে আমরা দেখব বড় এন্ডিয়ান এবং লিটল এন্ডিয়ান কি?

বিভিন্ন আর্কিটেকচারে, মাল্টি-বাইট ডেটা দুটি ভিন্ন উপায়ে সংরক্ষণ করা যেতে পারে। কখনও কখনও উচ্চ ক্রম বাইটগুলি প্রথমে সংরক্ষণ করা হয়, সেক্ষেত্রে এগুলি বিগ এন্ডিয়ান হিসাবে পরিচিত, এবং কখনও কখনও নিম্ন ক্রম বাইটগুলি প্রথমে সংরক্ষণ করা হয়, তারপর একে ছোট এন্ডিয়ান বলা হয়৷

উদাহরণস্বরূপ, যদি সংখ্যাটি 0x9876543210 হয়, তাহলে বড় এন্ডিয়ান হবে −

আমি কিভাবে C++ এ বড়-এন্ডিয়ান এবং লিটল-এন্ডিয়ান মানগুলির মধ্যে রূপান্তর করব?

ছোট এন্ডিয়ান এই রকম হবে −

আমি কিভাবে C++ এ বড়-এন্ডিয়ান এবং লিটল-এন্ডিয়ান মানগুলির মধ্যে রূপান্তর করব?

এই বিভাগে আমরা দেখব কিভাবে ছোট এন্ডিয়ানকে বড় এন্ডিয়ানে রূপান্তর করা যায় এবং এর বিপরীতে। এটি করার জন্য আমাদের ১ম এবং ৪র্থ বাইট এবং ২য় ও ৩য় বাইট বিনিময় করতে হবে। আমরা লজিক্যাল এক্সপ্রেশন ব্যবহার করে তাদের বিনিময় করতে পারি। নম্বরটির কপি চারবার করুন, তারপর প্রথম কপির জন্য, 1ম বাইটটি 24 বার ডানদিকে স্থানান্তর করুন, দ্বিতীয় অনুলিপির জন্য, এটি 00FF0000 দিয়ে মাস্ক করুন, তারপরে ডানদিকে 8 বিট অদলবদল করুন, 3য় কপির জন্য এটি 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. কিভাবে একটি int কে C++ এ স্ট্রিং এ রূপান্তর করবেন?

  2. কিভাবে C++ এ ফ্লোট এবং ডাবল তুলনা করবেন?

  3. C++ এবং C# এর মধ্যে পার্থক্য

  4. কিভাবে Excel এ হেক্টর এবং একরের মধ্যে কোষ রূপান্তর করতে হয়