C++ ByteArray

C Bytearray



C++ میں، بائٹ سرنی کو عام طور پر غیر دستخط شدہ چار ڈیٹا کی اقسام کی ایک صف کے طور پر دکھایا جاتا ہے۔ اس کا استعمال بائٹ کی ترتیب کو رکھنے کے لیے کیا جاتا ہے جو اکثر میموری بلاکس یا بائنری ڈیٹا کی علامت کے لیے استعمال ہوتے ہیں۔ ہم اسے C++ میں بائٹ ارے کے طور پر بھی بیان کر سکتے ہیں، میموری کا ایک متصل بلاک جو بائٹس کے ترتیب وار مجموعہ کو ذخیرہ کرنے کے لیے استعمال ہوتا ہے۔ یہ خام بائنری ڈیٹا کے ساتھ کام کرنے کا ایک لچکدار اور موثر طریقہ فراہم کرتا ہے۔ ڈیٹا کو بائٹس کے طور پر پیش کرتے ہوئے، ہمارے پاس اس کی ساخت پر قطعی کنٹرول ہے اور ہم اسے بائٹ کی سطح پر جوڑ سکتے ہیں۔ یہاں، ہم اس مضمون میں بائٹ اری کو بنائیں گے اور شروع کریں گے اور سٹرنگ کو بائٹ اری میں تبدیل کریں گے۔

مثال 1:

'iostream' کو یہاں شامل کیا گیا ہے جو کہ ہیڈر فائل ہے جو ڈیٹا کو ان پٹ یا آؤٹ پٹ کرنے کے لیے فنکشنز کو استعمال کرنے میں معاون ہے۔ اس کے نیچے، ہم معیاری نام کی جگہ 'std' کا استعمال کرتے ہیں اور 'main()' کو استعمال کرتے ہیں۔ اب، 'main()' میں، ہم 'mybyteArray[]' نام کی بائٹ اری کا اعلان کرتے ہیں جس میں 'غیر دستخط شدہ چار' ڈیٹا کی قسم ہے اور اسے پانچ عناصر کے ساتھ شروع کرتے ہیں۔

پھر، ہم 'cout' کا استعمال کرتے ہیں جو مطلوبہ ڈیٹا کو رینڈر کرنے اور 'for' لوپ رکھنے میں مدد کرتا ہے۔ یہ 'for' لوپ بائٹ سرنی کے عناصر کو حاصل کرنے میں مدد کرتا ہے، اور 'cout' اس بائٹ سرنی کے عناصر کو ان کے ہیکساڈیسیمل نمبرز کے ساتھ پیش کرنے میں مدد کرتا ہے کیونکہ ہم 'My byteArray[' << i << ']' کو جگہ دیتے ہیں۔ اور cout میں 'ہیکس'۔







کوڈ 1:

# شامل کریں

نام کی جگہ کا استعمال کرتے ہوئے std ;

int مرکزی ( ) {

غیر دستخط شدہ چار mybyteArray [ ] = { 0x31 ، 0x32 ، 0x33 ، 0x34 ، 0x35 } ;

cout << 'بائٹ سرنی کے عناصر ہیں:' << endl ;

کے لیے ( int میں = 0 ; میں < کا سائز ( mybyteArray ) ; میں ++ ) {

cout << 'میرا بائٹ ایرے[' << میں << '] = ' << ہیکس << ( int ) mybyteArray [ میں ] << endl ;

}

واپسی 0 ;

}

آؤٹ پٹ:



کوڈ کا نتیجہ یہاں پیش کیا گیا ہے اور بائٹ سرنی جو ہم نے پچھلے کوڈ میں بنایا تھا اب ظاہر ہوتا ہے۔







مثال 2:

اس کوڈ میں 'iostream' ہیڈر فائل شامل ہے جو فنکشنز کا استعمال کرتے ہوئے ان پٹ یا آؤٹ پٹ ڈیٹا کی سہولت فراہم کرتی ہے۔ اس کے نیچے، ہم 'main()' فنکشن کو کہتے ہیں اور 'std' معیاری نام کی جگہ استعمال کرتے ہیں۔ اس کے بعد ہم 'byteA[]' نام اور 'غیر دستخط شدہ چار' ڈیٹا کی قسم کے ساتھ ایک بائٹ سرنی کا اعلان اور آغاز کرتے ہیں۔ ہم اس بائٹ سرنی کو چھ عناصر تفویض کرتے ہیں اور پھر ہر عنصر تک رسائی کے لیے 'for' لوپ کا استعمال کرتے ہیں۔ ہم '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 a = 0 ; a < کا سائز ( بائٹ اے ) ; a ++ ) {

cout << 'بائٹ ایرے[' << a << '] = ' << ہیکس << ( int ) بائٹ اے [ a ] << endl ;

}

cout << ' \n بائٹ سرنی کے عناصر کو تبدیل کرنا:' << endl ;

بائٹ اے [ 0 ] = 0x11 ;

بائٹ اے [ 2 ] = 0x46 ;

بائٹ اے [ 4 ] = 0x77 ;

کے لیے ( int a = 0 ; a < کا سائز ( بائٹ اے ) ; a ++ ) {

cout << 'بائٹ ایرے[' << a << '] = ' << ہیکس << ( int ) بائٹ اے [ a ] << endl ;

}

واپسی 0 ;

}

آؤٹ پٹ:

بائٹ سرنی جو ہم نے بنائی ہے اور ترمیم شدہ سرنی پیش کی گئی ہے۔ ہم نے اپنے کوڈ میں اس بائٹ سرنی کی اقدار میں ترمیم کی ہے جو اس نتیجہ میں بھی پیش کی گئی ہے۔

مثال 3:

یہاں، ہم اس کوڈ میں اپنے سٹرنگ ڈیٹا کو بائٹ اری میں تبدیل کرنے کے لیے 'transform()' طریقہ استعمال کرتے ہیں۔ 'iostream'، 'cstddef'، اور 'algorithm' ہیڈر فائلیں اس کوڈ میں شامل ہیں۔ یہ ہیڈر فائلز امپورٹ کی جاتی ہیں تاکہ ہم ان فنکشنز کو آسانی سے استعمال کر سکیں جو ان میں بیان کیے گئے ہیں۔ اس کے نیچے، ہم 'std' نام کی جگہ رکھتے ہیں اور 'main()' طریقہ کو کال کرتے ہیں۔ پھر، ہم 'Hello World' کے ساتھ 'سٹرنگ' ڈیٹا ٹائپ کے 'myString' متغیر کو شروع کرتے ہیں۔

اب، ہم دیے گئے بیان کو ظاہر کرنے کے لیے 'cout' کا اضافہ کرتے ہیں۔ اس کے نیچے، ہم 'myString.length()' کے سائز کی بائٹ اری بناتے ہیں۔ اس کے بعد، ہم 'ٹرانسفارم()' فنکشن کا استعمال کرتے ہیں جو سٹرنگ کریکٹرز پر اعادہ کرتا ہے اور 'const char& character' اور 'return byte(character)' رکھتا ہے جو سٹرنگ کے عنصر کو بائٹس میں تبدیل کرتا ہے اور انہیں بائٹ میں کاپی کرتے ہیں۔ صف

اس کے بعد، ہم 'for' لوپ کا استعمال کرتے ہیں جہاں ہم 'const byte & byt: byteArray' کو شامل کرتے ہیں جو بائٹ ارے پر دہراتا ہے۔ پھر، ہم 'cout' کو شامل کرتے ہیں جو تمام عناصر کو دکھاتا ہے جو بائٹ سرنی میں تبدیل ہوتے ہیں۔

کوڈ 3:

# شامل کریں

# شامل کریں

#include

نام کی جگہ کا استعمال کرتے ہوئے std ;

int مرکزی ( )

{

string myString = 'ہیلو ورلڈ' ;

cout << 'سٹرنگ ہے' << myString << endl << endl ;

cout << 'بائٹ ایرے میں تبدیل شدہ سٹرنگ ہے' << endl ;

بائٹ byteArray [ myString. لمبائی ( ) ] ;

تبدیل (

myString. شروع ( ) ،

myString. اختتام ( ) ،

byteArray ،

[ ] ( const چار اور کردار ) {

واپسی بائٹ ( کردار ) ;

} ) ;

کے لیے ( const بائٹ اور ایک فلیٹ : byteArray )

{

cout << to_integer < int > ( ایک فلیٹ ) << '،' ;

}

cout << endl ;

واپسی 0 ;

}

آؤٹ پٹ:

سٹرنگ اور تبدیل شدہ سٹرنگ کو بائٹ سرنی میں اب اس نتیجہ میں پیش کیا گیا ہے۔ ہم نے اپنے کوڈ میں 'transform()' طریقہ استعمال کرتے ہوئے اس سٹرنگ کو بائٹ اری میں تبدیل کیا۔

مثال 4:

آئیے اس کوڈ میں 'memcpy()' طریقہ استعمال کرتے ہوئے اپنے سٹرنگ ڈیٹا کو بائٹ اری میں تبدیل کرتے ہیں۔ اب، اس کوڈ میں 'iostream'، 'cstddef'، اور 'algorithm' ہیڈر فائلیں شامل ہیں۔ ہم ان ہیڈر فائلوں کو درآمد کرتے ہیں تاکہ ہم آسانی کے ساتھ ان میں بیان کردہ فنکشنز کو استعمال کرسکیں۔ ہم اس کے نیچے 'std' نام کی جگہ رکھتے ہیں اور اس مقام سے 'main()' فنکشن کو طلب کرتے ہیں۔

اگلا، ہم 'stringData' متغیر میں 'Byte Array' کو شروع کرتے ہیں۔ فراہم کردہ بیان کو دکھانے کے لیے، ہم اب 'cout' کمانڈ شامل کرتے ہیں۔ اس کے نیچے، 'stringData.length()' کے سائز کے ساتھ ایک بائٹ سرنی بنائی گئی ہے۔ ہم 'memcpy()' طریقہ استعمال کرتے ہیں اور اس فنکشن میں تین پیرامیٹرز پاس کرتے ہیں جو کہ بالترتیب 'ArrayOfBytes'، 'stringData.data()'، اور 'stringData.length()' ہیں۔ یہ فنکشن سٹرنگ کے کریکٹر کی میموری کو بائٹ اری میں کاپی کرنے میں مدد کرتا ہے جس کا ہم نے اعلان کیا ہے۔

اس کے بعد، ہم 'for' لوپ کا استعمال کرتے ہیں جس میں ہم 'const byte & my_byte: ArrayOfBytes' شامل کرتے ہیں تاکہ بائٹ ارے کو عبور کریں۔ اس کے بعد، ہم 'cout' فنکشن شامل کرتے ہیں جو ہر اس عنصر کو دکھاتا ہے جو بائٹ اری میں تبدیل ہو چکا ہے۔

کوڈ 4:

# شامل کریں

# شامل کریں

#include

نام کی جگہ کا استعمال کرتے ہوئے std ;

int مرکزی ( )

{

string stringData = 'بائٹ سرنی' ;

cout << 'سٹرنگ ڈیٹا ہے' << stringData << endl << endl ;

cout << 'سٹرنگ کو یہاں بائٹ ایرے میں تبدیل کیا گیا ہے جو ' << endl ;

بائٹ ArrayOfBytes [ stringData. لمبائی ( ) ] ;

memcpy ( ArrayOfBytes ، stringData. ڈیٹا ( ) ، stringData. لمبائی ( ) ) ;

کے لیے ( const بائٹ اور میرا_بائٹ : ArrayOfBytes )

{

cout << to_integer < int > ( میرا_بائٹ ) << '،' ;

}



واپسی 0 ;

}

آؤٹ پٹ:

یہ نتیجہ اصل سٹرنگ اور اس سٹرنگ کو پیش کرتا ہے جو بائٹ سرنی میں تبدیل ہو جاتی ہے۔ اس سٹرنگ کو بائٹ اری میں تبدیل کرنے کے لیے ہم اپنے کوڈ کا 'memcpy()' طریقہ استعمال کرتے ہیں۔

نتیجہ

ہم نے سیکھا کہ C++ میں بائٹ ارییں بائنری ڈیٹا کے ساتھ موثر طریقے سے کام کرنے کے لیے کم سطح کا طریقہ پیش کرتی ہیں۔ ہم نے دریافت کیا کہ وہ ہمیں میموری پر کنٹرول اور سیریلائزیشن، نیٹ ورکنگ، اور نچلے درجے کے ڈیٹا پروسیسنگ جیسے کاموں کی بنیاد فراہم کرتے ہیں۔ اس آرٹیکل میں، ہم نے C++ میں بائٹ سرنی کا اعلان کرنے اور اسے شروع کرنے کے ساتھ ساتھ اسٹرنگ کو ان کے کوڈز کے ساتھ بائٹ اری میں تبدیل کرنے کے تصور کو بھی دریافت کیا۔