C++ میں ہیکس ویلیوز پرنٹ کرنا

C My Yks Wylywz Prn Krna



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

Std::hex کا استعمال کرتے ہوئے ہیکس ویلیوز پرنٹ کرنا

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







# شامل کریں
# شامل کریں
اہم int ( ) {
int decimalValue = 907 ;
std::cout << 'ہیکساڈیسیمل قدر ہے:' << std::hex << ڈیسیمل ویلیو << std::endl;
واپسی 0 ;
}


اس مثال میں، 'std::hex' مینیپلیٹر کا اطلاق 'std::cout' آؤٹ پٹ سٹریم پر 'decimalValue' انٹیجر پرنٹ کرنے سے پہلے کیا جاتا ہے۔ ہیکس ویلیو پرنٹ کرنے کے بعد، سٹریم کو اپنے معمول کے رویے پر لوٹا دیا جاتا ہے۔ یہ کوڈ بالکل ظاہر کرتا ہے کہ C++ میں 'std::hex' مینیپلیٹر کا استعمال کرتے ہوئے ہیکساڈیسیمل ویلیو کیسے پرنٹ کی جائے۔ یہاں کوڈ کی خرابی ہے:



ہیڈرز



: یہ بنیادی ان پٹ/آؤٹ پٹ کے لیے استعمال ہوتا ہے جیسے کنسول میں پرنٹنگ اور آؤٹ پٹ کو ہیکساڈیسیمل کے طور پر فارمیٹ کرنے کے لیے 'std::hex' مینیپلیٹر فراہم کرتا ہے۔





مین فنکشن

'int decimalValue = 907؛' قسم 'int' کے 'decimalValue' متغیر کا اعلان کرتا ہے اور اسے 907 کی اعشاریہ قدر کے ساتھ تفویض کرتا ہے۔



'std::cout << 'ہیکساڈیسیمل قدر ہے: ' << std::hex << decimalValue << std::endl;' 'ہیکس ڈیسیمل ویلیو:' پرنٹ کرتا ہے جس کے بعد 'ڈیسیمل ویلیو' کی ہیکسا ڈیسیمل نمائندگی کرتا ہے۔

'std::hex' آؤٹ پٹ سٹریم کو مندرجہ ذیل قدر کو ہیکسا ڈیسیمل سے تعبیر کرنے کی ہدایت کرتا ہے۔ 'decimalValue' متغیر میں اعشاریہ قدر ہے جسے ہیکس میں تبدیل کیا جانا ہے۔ 'std::endl' پرنٹنگ کے بعد ایک نئی لائن کیریکٹر داخل کرتا ہے۔ آخر میں، یہ کوڈ اب 'ہیکسڈیسیمل ویلیو: 38B' پرنٹ کرتا ہے جیسا کہ آپ مندرجہ ذیل آؤٹ پٹ اسنیپٹ میں دیکھ سکتے ہیں:

'%x' فارمیٹ اسپیفائر کا استعمال کرتے ہوئے ہیکس ویلیوز کو پرنٹ کرنا

سی پروگرامنگ لینگویج سے واقف لوگوں کے لیے، 'printf' فنکشن C++ میں ہیکساڈیسیمل قدروں کو مختصراً پرنٹ کرتا ہے۔ جبکہ C++ اور 'std::hex' اپروچ پیش کرتا ہے، 'printf' وہی نتیجہ حاصل کرنے کا ایک جامع اور براہ راست طریقہ فراہم کرتا ہے۔

# شامل کریں
اہم int ( ) {
int decimalValue = 1256 ;
printf ( 'printf کے ساتھ ہیکساڈیسیمل قدر ہے: %x \n ' , decimalValue ) ;
واپسی 0 ;
}


اس مثال میں، 'printf' فنکشن کے اندر موجود '%x' فارمیٹ کا وضاحت کنندہ اشارہ کرتا ہے کہ متعلقہ دلیل کو ہیکساڈیسیمل میں پرنٹ کیا جانا چاہیے۔ دیا گیا کوڈ C++ میں 'printf' کا استعمال کرتے ہوئے ایک ہیکساڈیسیمل ویلیو پرنٹ کرنے کی بہترین مثال ہے۔ آئیے اسے توڑ دیں:

ہیڈرز

: اس ہیڈر میں 'printf' فنکشن اور دیگر معیاری ان پٹ/آؤٹ پٹ فنکشنز شامل ہیں۔ ہیڈر لائبریریوں کے سوٹ میں شامل ہے جو C++ کے ساتھ آتی ہے۔ یہ C زبان کی لائبریری سے فعالیت لاتا ہے، جو C++ کو کلاسک ان پٹ اور آؤٹ پٹ تکنیکوں کو استعمال کرنے کی اجازت دیتا ہے جو اصل میں C میں شمولیت کے ذریعے پائی جاتی ہیں۔

مین فنکشن

'int decimalValue = 1256؛' 1256 کی اعشاریہ قدر کا اعلان اور تفویض کرتا ہے ایک عدد متغیر کو جس کا نام 'decimalValue' ہے۔ 'printf' میں 'printf' ('printf کے ساتھ ہیکساڈیسیمل ویلیو ہے: %x\n'، decimalValue);' اسٹیٹمنٹ فارمیٹ شدہ آؤٹ پٹ کو پرنٹ کرنے کے لیے 'printf' فنکشن کو کال کرتا ہے۔ '%x' 'فارمیٹ سپیفائر' ہے جو اس بات کی نشاندہی کرتا ہے کہ درج ذیل دلیل کو چھوٹے ہیکسا ڈیسیمل نمبر کے طور پر پرنٹ کیا جانا چاہیے۔ آخر میں، '\n' پرنٹ کرنے کے بعد ایک نئی لائن کیریکٹر داخل کرتا ہے۔ یہ کوڈ 'printf کے ساتھ ہیکساڈیسیمل ویلیو 4e8 ہے' کو کنسول میں آؤٹ پٹ کرتا ہے جیسا کہ درج ذیل آؤٹ پٹ اسنیپٹ میں دیکھا گیا ہے:

پیڈنگ کے ساتھ ہیکس ویلیوز پرنٹ کرنا

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

# شامل کریں
# شامل کریں
اہم int ( ) {
int decimalValue = 47 ;
std::cout << 'پیڈنگ کے ساتھ ہیکسا ڈیسیمل ویلیو ہے:' << std::setw ( 8 ) << std::hex << ڈیسیمل ویلیو << std::endl;
واپسی 0 ;
}


اس مثال میں، std::setw(8) اس بات کو یقینی بناتا ہے کہ ہیکساڈیسیمل ویلیو 8 حروف کی کم از کم چوڑائی کے ساتھ پرنٹ کی گئی ہے۔ یہ خاص طور پر کالموں میں یا میموری ایڈریس کے ساتھ اقدار کو سیدھ میں لانے کے لیے مفید ہے۔

آئیے کوڈ کو توڑتے ہیں اور ہر ایک لائن کو ایک ایک کرکے سمجھتے ہیں:

ہیڈرز

: یہ بنیادی ان پٹ/آؤٹ پٹ فعالیت فراہم کرتا ہے جیسے پرنٹنگ کے لیے 'std::cout' اسٹریم۔

: یہ فارمیٹنگ مینیپولیٹر پیش کرتا ہے جیسے کہ 'std::setw' جو آؤٹ پٹ کی ظاہری شکل کو تبدیل کرنے کے لیے استعمال ہوتے ہیں۔

مین فنکشن

'int decimalValue = 47؛' 'decimalValue' نامی عددی متغیر کو 47 کی اعشاریہ قدر کا اعلان اور تفویض کرتا ہے۔

'std::cout << 'پیڈنگ کے ساتھ ہیکساڈیسیمل ویلیو ہے: ' << std::setw(8) << std::hex << decimalValue << std::endl;' سٹیٹمنٹ سیٹ ڈبلیو(8) پیڈنگ کے ساتھ 47 کا ہیکساڈیسیمل نمبر پرنٹ کرتا ہے۔ 'std::setw(8)' 8 کی دلیل کے ساتھ 'std::setw' مینیپلیٹر کو لاگو کرتا ہے، کم از کم آؤٹ پٹ چوڑائی 8 حروف کی وضاحت کرتا ہے۔

'std::hex' 'std::hex' مینیپلیٹر کا اطلاق کرتا ہے جو سٹریم کو اگلی قدر کو ہیکسا ڈیسیمل کے طور پر تشریح کرنے کے لیے کہتا ہے جیسا کہ دی گئی مثالوں میں سے ایک میں وضاحت کی گئی ہے۔ مندرجہ ذیل آؤٹ پٹ کنسول پر پرنٹ کیا جاتا ہے:

بائٹ ڈیٹا کی ہیکس ویلیوز پرنٹ کرنا

بائٹ ڈیٹا کے ساتھ کام کرتے وقت، ہر بائٹ کو دو ہندسوں کی ہیکساڈیسیمل قدر کے طور پر پیش کرنا عام ہے۔ یہ یقینی بنا کر حاصل کیا جا سکتا ہے کہ چوڑائی 2 پر سیٹ کی گئی ہے اور 'std::setfill('0')' کا استعمال کرتے ہوئے پہلے صفر کو پُر کرنا ہے۔ ذیل میں آپ کو یہ سمجھنے میں مدد کرنے کے لیے ایک مثال دی گئی ہے کہ بائٹ ڈیٹا کی ہیکس ویلیوز کو کیسے پرنٹ کیا جا سکتا ہے۔

# شامل کریں
# شامل کریں
اہم int ( ) {
غیر دستخط شدہ چار بائٹ ڈیٹا = 0xAB؛
std::cout << 'بائٹ ڈیٹا کی ہیکساڈیسیمل نمائندگی یہ ہے:'
<< std::setw ( 2 ) << std::setfill ( '0' ) << std::hex << static_cast < int > ( بائٹ ڈیٹا )
<< std::endl;
واپسی 0 ;
}


یہاں، 'std::setw(2)' یقینی بناتا ہے کہ ہر بائٹ کو کم از کم 2 حروف کی چوڑائی کے ساتھ دکھایا گیا ہے، اور 'std::setfill('0')' واضح کرتا ہے کہ چوڑائی کو بھرنے کے لیے لیڈنگ زیرو استعمال کیے جائیں۔

یہ پہلے دیا گیا پروگرام مخصوص فارمیٹنگ کے ساتھ C++ میں ایک ہیکساڈیسیمل ویلیو پرنٹ کرنے کے لیے زیادہ جدید طریقہ کو ظاہر کرتا ہے۔ آئیے بہتر تفہیم کے لیے اسے توڑ دیں:

ہیڈرز

: یہ پرنٹنگ کے لیے 'std::cout' اور 'std::hex' جیسی بنیادی ان پٹ/آؤٹ پٹ فعالیت فراہم کرتا ہے۔

: یہ فارمیٹنگ مینیپولیٹر پیش کرتا ہے جیسے کہ 'std::setw' اور 'std::setfill' جو آؤٹ پٹ کی ظاہری شکل کو تبدیل کرنے کے لیے استعمال ہوتے ہیں۔

مین فنکشن

مرکزی فنکشن میں، ایک غیر دستخط شدہ 'byteData = 0xAB؛' char کی وضاحت کی گئی ہے جو 'byteData' نامی ایک غیر دستخط شدہ چار متغیر کا اعلان کرتا ہے اور اسے '0xAB' کی ہیکساڈیسیمل قدر تفویض کرتا ہے۔ 'std::cout << 'بائٹ ڈیٹا کی ہیکساڈیسیمل نمائندگی یہ ہے: ':' بیان آؤٹ پٹ اسٹریم کا استعمال کرتے ہوئے کنسول میں پیغام بھیجتا ہے۔

'<< std::setw(2) << std::setfill('0') << std::hex << static_cast (byteData) << std::endl;' اسٹیٹمنٹ چین آؤٹ پٹ کو فارمیٹ کرنے کے لیے متعدد ہیرا پھیری کا اطلاق کرتا ہے۔

std::setw(2): یہ کم از کم آؤٹ پٹ چوڑائی کو 2 حروف پر سیٹ کرتا ہے۔

std::setfill('0'): یہ بتاتا ہے کہ کم از کم چوڑائی تک پہنچنے کے لیے جو بھی پیڈنگ درکار ہے اسے '0' کریکٹر سے بھرنا چاہیے۔

std::hex: یہ سٹریم کو کہتا ہے کہ اگلی قدر کو ہیکسا ڈیسیمل سے تعبیر کرے۔

static_cast (byteData): یہ غیر دستخط شدہ چار ڈیٹا کو ہیکسا ڈیسیمل میں تبدیل کرنے سے پہلے ایک 'int' میں ڈالتا ہے۔ یہ تکنیکی طور پر ضروری نہیں ہے لیکن کچھ فارمیٹنگ کے اختیارات کے ساتھ مستقل مزاجی کے لیے استعمال کیا جا سکتا ہے۔

std::endl: پرنٹ کرنے کے بعد یہ ایک نئی لائن کریکٹر داخل کرتا ہے۔

اس پروگرام کا آؤٹ پٹ جو کنسول پر پرنٹ کیا گیا ہے درج ذیل ٹکڑوں میں دکھایا گیا ہے۔

نتیجہ

C++ میں ہیکساڈیسیمل اقدار کو پرنٹ کرنے میں دستیاب ٹولز کو سمجھنا اور مخصوص ضروریات کی بنیاد پر مناسب طریقہ کا انتخاب کرنا شامل ہے۔ چاہے آپ 'std::hex' مینیپلیٹر، 'printf' فنکشن کا انتخاب کریں، یا پیڈنگ اور لیڈنگ زیرو کے لیے فارمیٹنگ ٹولز کا مجموعہ، ان تکنیکوں کی ٹھوس گرفت کسی بھی C++ پروگرامر کے لیے ضروری ہے۔ ان طریقوں کو سوچ سمجھ کر لاگو کر کے، آپ اس بات کو یقینی بنا سکتے ہیں کہ آپ کی ہیکساڈیسیمل قدریں درست طریقے سے اور بصری طور پر دلکش فارمیٹ میں ظاہر ہوں جو آپ کے C++ کوڈ کی مجموعی پڑھنے کی اہلیت اور وضاحت میں معاون ہیں۔