C++ বাইটঅ্যারে

C Ba Ita A Yare



C++ এ, একটি বাইট অ্যারেকে সাধারণত স্বাক্ষরবিহীন চার ডেটা প্রকারের অ্যারে হিসেবে উপস্থাপন করা হয়। এটি বাইট ক্রম ধরে রাখার জন্য নিযুক্ত করা হয় যা প্রায়শই মেমরি ব্লক বা বাইনারি ডেটার প্রতীক হিসাবে ব্যবহৃত হয়। আমরা এটিকে C++-এ একটি বাইট অ্যারে হিসেবেও সংজ্ঞায়িত করতে পারি, মেমরির একটি সংলগ্ন ব্লক যা বাইটের একটি অনুক্রমিক সংগ্রহ সংরক্ষণ করতে ব্যবহৃত হয়। এটি কাঁচা বাইনারি ডেটার সাথে কাজ করার জন্য একটি নমনীয় এবং কার্যকর উপায় প্রদান করে। ডেটাকে বাইট হিসাবে উপস্থাপন করে, আমাদের এর গঠনের উপর একটি সুনির্দিষ্ট নিয়ন্ত্রণ রয়েছে এবং এটি একটি বাইট স্তরে ম্যানিপুলেট করতে পারি। এখানে, আমরা এই নিবন্ধে বাইট অ্যারে তৈরি করব এবং শুরু করব এবং স্ট্রিংটিকে বাইট অ্যারেতে রূপান্তর করব।

উদাহরণ 1:

'iostream' এখানে অন্তর্ভুক্ত করা হয়েছে যা হেডার ফাইল যা ডেটা ইনপুট বা আউটপুট করার জন্য ফাংশন ব্যবহার করতে সহায়তা করে। এর নিচে, আমরা স্ট্যান্ডার্ড নেমস্পেস 'std' ব্যবহার করি এবং 'main()' ব্যবহার করি। এখন, “main()”-এ, আমরা “mybyteArray[]” নামের একটি বাইট অ্যারে ঘোষণা করি যার সাথে “আনসাইনড char” ডাটা টাইপ আছে এবং পাঁচটি উপাদান দিয়ে শুরু করি।

তারপর, আমরা 'cout' ব্যবহার করি যা কাঙ্খিত ডেটা রেন্ডার করতে এবং 'for' লুপ স্থাপন করতে সাহায্য করে। এই 'ফর' লুপ বাইট অ্যারের উপাদানগুলি পেতে সহায়তা করে এবং 'কাউট' এই বাইট অ্যারের উপাদানগুলিকে তাদের হেক্সাডেসিমেল সংখ্যা সহ রেন্ডার করতে সহায়তা করে যখন আমরা 'মাই বাইট অ্যারে[' << i << ']' রাখি। এবং cout এ 'হেক্স'।







কোড 1:

# অন্তর্ভুক্ত করুন

নামস্থান std ব্যবহার করে ;

int প্রধান ( ) {

স্বাক্ষরবিহীন চর mybyteArray [ ] = { 0x31 , 0x32 , 0x33 , 0x34 , 0x35 } ;

cout << 'বাইট অ্যারের উপাদান হল:' << endl ;

জন্য ( int i = 0 ; i < আকার ( mybyteArray ) ; i ++ ) {

cout << 'আমার বাইট অ্যারে[' << i << '] = ' << হেক্স << ( int ) mybyteArray [ i ] << endl ;

}

ফিরে 0 ;

}

আউটপুট:



কোডের ফলাফল এখানে রেন্ডার করা হয়েছে এবং আমরা আগের কোডে যে বাইট অ্যারে তৈরি করেছি তা এখন প্রদর্শিত হবে।







উদাহরণ 2:

এই কোডটি 'iostream' হেডার ফাইল অন্তর্ভুক্ত করে যা ফাংশন ব্যবহার করে ইনপুট বা আউটপুট ডেটার সুবিধা দেয়। এর নিচে, আমরা 'main()' ফাংশনকে কল করি এবং 'std' স্ট্যান্ডার্ড নেমস্পেস ব্যবহার করি। তারপর আমরা “byteA[]” নাম এবং “আনসাইনড চার” ডাটা টাইপ সহ একটি বাইট অ্যারে ঘোষণা ও শুরু করি। আমরা এই বাইট অ্যারেতে ছয়টি উপাদান বরাদ্দ করি এবং তারপর প্রতিটি উপাদান অ্যাক্সেস করতে 'ফর' লুপ ব্যবহার করি। আমরা 'cout' ব্যবহার করি তাই এই বাইট অ্যারের আইটেমগুলির হেক্সাডেসিমেল সংখ্যাগুলি নীচে প্রদর্শিত হয় কারণ আমরা এতে 'হেক্স' এবং 'বাইটঅ্যারে[' << a << ']' উভয়ই অন্তর্ভুক্ত করি।

এখন, আমরা '0x11' কে 'byteA[0]' নির্ধারণ করে এই বাইট অ্যারের উপাদানগুলি পরিবর্তন করি। তারপর, আমরা যথাক্রমে '0x46' এবং '0x77' কে 'byteA[2]' এবং 'byteA[4]' বরাদ্দ করি। তারপর, এই মানগুলি আমরা তৈরি করা বাইট অ্যারে থেকে পরিবর্তন করা হয়। এর পরে, বাইট অ্যারের সমস্ত উপাদান এবং নীচে যোগ করা 'cout' অ্যাক্সেস করতে আমরা আবার 'for' লুপটি ব্যবহার করি। এখন, পরিবর্তিত মানগুলি তাদের হেক্সাডেসিমেল সংখ্যা সহ এখানে রেন্ডার করা হয়েছে।



কোড 2:

# অন্তর্ভুক্ত করুন

নামস্থান std ব্যবহার করে ;

int প্রধান ( ) {

স্বাক্ষরবিহীন চর বাইটএ [ ] = { 0x21 , 0x22 , 0x23 , 0x24 , 0x25 , 0x26 } ;

cout << 'বাইট অ্যারের উপাদানগুলি অ্যাক্সেস করা' << endl ;

জন্য ( int = 0 ; < আকার ( বাইটএ ) ; ++ ) {

cout << 'বাইটঅ্যারে[' << << '] = ' << হেক্স << ( int ) বাইটএ [ ] << endl ;

}

cout << ' \n বাইট অ্যারের উপাদান পরিবর্তন করা হচ্ছে:' << endl ;

বাইটএ [ 0 ] = 0x11 ;

বাইটএ [ 2 ] = 0x46 ;

বাইটএ [ 4 ] = 0x77 ;

জন্য ( int = 0 ; < আকার ( বাইটএ ) ; ++ ) {

cout << 'বাইটঅ্যারে[' << << '] = ' << হেক্স << ( int ) বাইটএ [ ] << endl ;

}

ফিরে 0 ;

}

আউটপুট:

আমরা যে বাইট অ্যারে তৈরি করেছি এবং পরিবর্তিত অ্যারে রেন্ডার করা হয়েছে। আমরা আমাদের কোডে এই বাইট অ্যারের মান পরিবর্তন করেছি যা এই ফলাফলে রেন্ডার করা হয়েছে।

উদাহরণ 3:

এখানে, আমরা আমাদের স্ট্রিং ডেটাকে এই কোডের বাইট অ্যারেতে রূপান্তর করতে 'ট্রান্সফর্ম()' পদ্ধতি ব্যবহার করি। 'iostream', 'cstddef', এবং 'অ্যালগরিদম' হেডার ফাইলগুলি এই কোডে অন্তর্ভুক্ত করা হয়েছে৷ এই হেডার ফাইলগুলি আমদানি করা হয় যাতে আমরা সহজেই তাদের মধ্যে সংজ্ঞায়িত ফাংশনগুলি ব্যবহার করতে পারি। এর নীচে, আমরা 'std' নামস্থান রাখি এবং 'main()' পদ্ধতিকে কল করি। তারপর, আমরা 'হ্যালো ওয়ার্ল্ড' দিয়ে 'স্ট্রিং' ডেটা টাইপের 'myString' ভেরিয়েবল শুরু করি।

এখন, আমরা প্রদত্ত বিবৃতি প্রদর্শন করতে 'cout' যোগ করি। এর নীচে, আমরা 'myString.length()' এর মতো একই আকারের বাইট অ্যারে তৈরি করি। এর পরে, আমরা 'ট্রান্সফর্ম()' ফাংশনটি ব্যবহার করি যা স্ট্রিং অক্ষরগুলির উপর পুনরাবৃত্তি করে এবং 'কনস্ট অক্ষর এবং অক্ষর' এবং 'রিটার্ন বাইট(অক্ষর)' স্থাপন করে যা স্ট্রিংয়ের উপাদানটিকে বাইটে রূপান্তর করে এবং সেগুলিকে বাইটে কপি করে। অ্যারে

এর পরে, আমরা 'for' লুপ ব্যবহার করি যেখানে আমরা 'const byte& byt: byteArray' যোগ করি যা বাইট অ্যারের উপর পুনরাবৃত্তি করে। তারপর, আমরা 'cout' যোগ করি যা বাইট অ্যারেতে রূপান্তরিত সমস্ত উপাদান প্রদর্শন করে।

কোড 3:

# অন্তর্ভুক্ত করুন

# অন্তর্ভুক্ত

# অন্তর্ভুক্ত <অ্যালগরিদম>

নামস্থান std ব্যবহার করে ;

int প্রধান ( )

{

স্ট্রিং myString = 'ওহে বিশ্ব' ;

cout << 'স্ট্রিংটি হল' << myString << endl << endl ;

cout << 'বাইটঅ্যারেতে রূপান্তরিত স্ট্রিং হল ' << endl ;

বাইট বাইট অ্যারে [ myString. দৈর্ঘ্য ( ) ] ;

রূপান্তর (

myString. শুরু ( ) ,

myString. শেষ ( ) ,

byteArray ,

[ ] ( const চর এবং চরিত্র ) {

ফিরে বাইট ( চরিত্র ) ;

} ) ;

জন্য ( const বাইট এবং একটি ফ্ল্যাট : byteArray )

{

cout << to_integer < int > ( একটি ফ্ল্যাট ) << ', ' ;

}

cout << endl ;

ফিরে 0 ;

}

আউটপুট:

বাইট অ্যারেতে স্ট্রিং এবং রূপান্তরিত স্ট্রিং এখন এই ফলাফলে রেন্ডার করা হয়েছে। আমরা আমাদের কোডে “ট্রান্সফর্ম()” পদ্ধতি ব্যবহার করে এই স্ট্রিংটিকে বাইট অ্যারেতে রূপান্তর করেছি।

উদাহরণ 4:

এই কোডের 'memcpy()' পদ্ধতি ব্যবহার করে আমাদের স্ট্রিং ডেটাকে একটি বাইট অ্যারেতে পরিণত করি। এখন, এই কোডটিতে 'iostream', 'cstddef' এবং 'অ্যালগরিদম' হেডার ফাইল রয়েছে। আমরা এই হেডার ফাইলগুলি আমদানি করি যাতে আমরা সহজে তাদের মধ্যে বর্ণিত ফাংশনগুলি ব্যবহার করতে পারি। আমরা এর নিচে 'std' নামস্থান রাখি এবং এই অবস্থান থেকে 'main()' ফাংশনটি চালু করি।

এরপর, আমরা 'স্ট্রিংডেটা' ভেরিয়েবলে 'বাইট অ্যারে' শুরু করি। প্রদত্ত বিবৃতি দেখানোর জন্য, আমরা এখন 'cout' কমান্ড অন্তর্ভুক্ত করি। এর নীচে, 'stringData.length()' এর মতো একই আকারের একটি বাইট অ্যারে তৈরি করা হয়েছে। আমরা “memcpy()” পদ্ধতি ব্যবহার করি এবং এই ফাংশনে তিনটি প্যারামিটার পাস করি যা যথাক্রমে “ArrayOfBytes”, “stringData.data()”, এবং “stringData.length()”। এই ফাংশনটি আমরা ঘোষিত বাইট অ্যারেতে স্ট্রিংয়ের অক্ষরের মেমরি কপি করতে সহায়তা করে।

এটি অনুসরণ করে, আমরা 'for' লুপটি ব্যবহার করি যেখানে আমরা বাইট অ্যারে অতিক্রম করতে 'const byte& my_byte: ArrayOfBytes' যোগ করি। তারপর, আমরা 'cout' ফাংশন যোগ করি যা বাইট অ্যারেতে রূপান্তরিত প্রতিটি উপাদান দেখায়।

কোড 4:

# অন্তর্ভুক্ত করুন

# অন্তর্ভুক্ত

# অন্তর্ভুক্ত

নামস্থান std ব্যবহার করে ;

int প্রধান ( )

{

স্ট্রিং stringData = 'বাইট অ্যারে' ;

cout << 'স্ট্রিং ডেটা হল' << stringData << endl << endl ;

cout << 'স্ট্রিংটি এখানে বাইটঅ্যারেতে রূপান্তরিত হয়েছে যা ' << endl ;

বাইট ArrayOfBytes [ stringData. দৈর্ঘ্য ( ) ] ;

memcpy ( ArrayOfBytes , stringData. তথ্য ( ) , stringData. দৈর্ঘ্য ( ) ) ;

জন্য ( const বাইট এবং আমার_বাইট : ArrayOfBytes )

{

cout << to_integer < int > ( আমার_বাইট ) << ', ' ;

}



ফিরে 0 ;

}

আউটপুট:

এই ফলাফলটি মূল স্ট্রিং এবং স্ট্রিংকে রেন্ডার করে যা একটি বাইট অ্যারেতে রূপান্তরিত হয়। এই স্ট্রিংটিকে বাইট অ্যারেতে রূপান্তর করতে আমরা আমাদের কোডের 'memcpy()' পদ্ধতি ব্যবহার করি।

উপসংহার

আমরা শিখেছি যে C++ এ বাইট অ্যারে বাইনারি ডেটার সাথে দক্ষতার সাথে কাজ করার জন্য একটি নিম্ন-স্তরের পদ্ধতির প্রস্তাব করে। আমরা অন্বেষণ করেছি যে তারা আমাদের মেমরির উপর নিয়ন্ত্রণ এবং সিরিয়ালাইজেশন, নেটওয়ার্কিং এবং নিম্ন-স্তরের ডেটা প্রক্রিয়াকরণের মতো কাজের ভিত্তি প্রদান করে। এই নিবন্ধে, আমরা C++-এ বাইট অ্যারে ঘোষণা এবং আরম্ভ করার ধারণার পাশাপাশি স্ট্রিংকে তাদের কোড সহ বাইট অ্যারেতে রূপান্তর করার ধারণাটি অন্বেষণ করেছি।