C++ پروگرامنگ میں، ہیکساڈیسیمل اقدار کو پرنٹ کرنا ایک عام ضرورت ہے۔ چاہے میموری ایڈریسز کے ساتھ کام کرنا ہو، بٹ وائز آپریشن کرنا ہو، یا ڈیٹا کی ہیکساڈیسیمل نمائندگی سے نمٹنا ہو، ہیکس ویلیوز کو مؤثر طریقے سے ظاہر کرنے کے لیے مختلف طریقوں کو سمجھنا ضروری ہے۔ یہ مضمون C++ میں ہیکساڈیسیمل اقدار کو پرنٹ کرنے کے مختلف طریقوں اور تکنیکوں کو تلاش کرتا ہے، ان کے اطلاقات اور استعمال کے معاملات پر روشنی ڈالتا ہے۔
Std::hex کا استعمال کرتے ہوئے ہیکس ویلیوز پرنٹ کرنا
C++ میں ہیکساڈیسیمل اقدار کو پرنٹ کرنے کا ایک سیدھا طریقہ
# شامل کریں
# شامل کریں
اہم int ( ) {
int decimalValue = 907 ;
std::cout << 'ہیکساڈیسیمل قدر ہے:' << std::hex << ڈیسیمل ویلیو << std::endl;
واپسی 0 ;
}
اس مثال میں، 'std::hex' مینیپلیٹر کا اطلاق 'std::cout' آؤٹ پٹ سٹریم پر 'decimalValue' انٹیجر پرنٹ کرنے سے پہلے کیا جاتا ہے۔ ہیکس ویلیو پرنٹ کرنے کے بعد، سٹریم کو اپنے معمول کے رویے پر لوٹا دیا جاتا ہے۔ یہ کوڈ بالکل ظاہر کرتا ہے کہ C++ میں '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++
اہم int ( ) {
int decimalValue = 1256 ;
printf ( 'printf کے ساتھ ہیکساڈیسیمل قدر ہے: %x \n ' , decimalValue ) ;
واپسی 0 ;
}
اس مثال میں، 'printf' فنکشن کے اندر موجود '%x' فارمیٹ کا وضاحت کنندہ اشارہ کرتا ہے کہ متعلقہ دلیل کو ہیکساڈیسیمل میں پرنٹ کیا جانا چاہیے۔ دیا گیا کوڈ C++ میں 'printf' کا استعمال کرتے ہوئے ایک ہیکساڈیسیمل ویلیو پرنٹ کرنے کی بہترین مثال ہے۔ آئیے اسے توڑ دیں:
ہیڈرز
مین فنکشن
'int decimalValue = 1256؛' 1256 کی اعشاریہ قدر کا اعلان اور تفویض کرتا ہے ایک عدد متغیر کو جس کا نام 'decimalValue' ہے۔ 'printf' میں 'printf' ('printf کے ساتھ ہیکساڈیسیمل ویلیو ہے: %x\n'، decimalValue);' اسٹیٹمنٹ فارمیٹ شدہ آؤٹ پٹ کو پرنٹ کرنے کے لیے 'printf' فنکشن کو کال کرتا ہے۔ '%x' 'فارمیٹ سپیفائر' ہے جو اس بات کی نشاندہی کرتا ہے کہ درج ذیل دلیل کو چھوٹے ہیکسا ڈیسیمل نمبر کے طور پر پرنٹ کیا جانا چاہیے۔ آخر میں، '\n' پرنٹ کرنے کے بعد ایک نئی لائن کیریکٹر داخل کرتا ہے۔ یہ کوڈ 'printf کے ساتھ ہیکساڈیسیمل ویلیو 4e8 ہے' کو کنسول میں آؤٹ پٹ کرتا ہے جیسا کہ درج ذیل آؤٹ پٹ اسنیپٹ میں دیکھا گیا ہے:
پیڈنگ کے ساتھ ہیکس ویلیوز پرنٹ کرنا
جب ہیکساڈیسیمل اقدار، خاص طور پر میموری ایڈریسز سے نمٹنے کے لیے، ایک مستقل چوڑائی یا پیڈنگ اکثر ضروری ہوتی ہے۔ یہ
# شامل کریں
اہم int ( ) {
int decimalValue = 47 ;
std::cout << 'پیڈنگ کے ساتھ ہیکسا ڈیسیمل ویلیو ہے:' << std::setw ( 8 ) << std::hex << ڈیسیمل ویلیو << std::endl;
واپسی 0 ;
}
اس مثال میں، std::setw(8) اس بات کو یقینی بناتا ہے کہ ہیکساڈیسیمل ویلیو 8 حروف کی کم از کم چوڑائی کے ساتھ پرنٹ کی گئی ہے۔ یہ خاص طور پر کالموں میں یا میموری ایڈریس کے ساتھ اقدار کو سیدھ میں لانے کے لیے مفید ہے۔
آئیے کوڈ کو توڑتے ہیں اور ہر ایک لائن کو ایک ایک کرکے سمجھتے ہیں:
ہیڈرز
مین فنکشن
'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++ میں ایک ہیکساڈیسیمل ویلیو پرنٹ کرنے کے لیے زیادہ جدید طریقہ کو ظاہر کرتا ہے۔ آئیے بہتر تفہیم کے لیے اسے توڑ دیں:
ہیڈرز
مین فنکشن
مرکزی فنکشن میں، ایک غیر دستخط شدہ 'byteData = 0xAB؛' char کی وضاحت کی گئی ہے جو 'byteData' نامی ایک غیر دستخط شدہ چار متغیر کا اعلان کرتا ہے اور اسے '0xAB' کی ہیکساڈیسیمل قدر تفویض کرتا ہے۔ 'std::cout << 'بائٹ ڈیٹا کی ہیکساڈیسیمل نمائندگی یہ ہے: ':' بیان آؤٹ پٹ اسٹریم کا استعمال کرتے ہوئے کنسول میں پیغام بھیجتا ہے۔
'<< std::setw(2) << std::setfill('0') << std::hex << static_cast
std::setw(2): یہ کم از کم آؤٹ پٹ چوڑائی کو 2 حروف پر سیٹ کرتا ہے۔
std::setfill('0'): یہ بتاتا ہے کہ کم از کم چوڑائی تک پہنچنے کے لیے جو بھی پیڈنگ درکار ہے اسے '0' کریکٹر سے بھرنا چاہیے۔
std::hex: یہ سٹریم کو کہتا ہے کہ اگلی قدر کو ہیکسا ڈیسیمل سے تعبیر کرے۔
static_cast
std::endl: پرنٹ کرنے کے بعد یہ ایک نئی لائن کریکٹر داخل کرتا ہے۔
اس پروگرام کا آؤٹ پٹ جو کنسول پر پرنٹ کیا گیا ہے درج ذیل ٹکڑوں میں دکھایا گیا ہے۔
نتیجہ
C++ میں ہیکساڈیسیمل اقدار کو پرنٹ کرنے میں دستیاب ٹولز کو سمجھنا اور مخصوص ضروریات کی بنیاد پر مناسب طریقہ کا انتخاب کرنا شامل ہے۔ چاہے آپ 'std::hex' مینیپلیٹر، 'printf' فنکشن کا انتخاب کریں، یا پیڈنگ اور لیڈنگ زیرو کے لیے فارمیٹنگ ٹولز کا مجموعہ، ان تکنیکوں کی ٹھوس گرفت کسی بھی C++ پروگرامر کے لیے ضروری ہے۔ ان طریقوں کو سوچ سمجھ کر لاگو کر کے، آپ اس بات کو یقینی بنا سکتے ہیں کہ آپ کی ہیکساڈیسیمل قدریں درست طریقے سے اور بصری طور پر دلکش فارمیٹ میں ظاہر ہوں جو آپ کے C++ کوڈ کی مجموعی پڑھنے کی اہلیت اور وضاحت میں معاون ہیں۔