طباعة القيم السداسية في C++

Tba T Alqym Alsdasyt Fy C



في برمجة C++، تعد طباعة القيم السداسية العشرية متطلبًا شائعًا. سواء كنت تعمل باستخدام عناوين الذاكرة، أو إجراء عمليات Bitwise، أو التعامل مع تمثيلات البيانات السداسية العشرية، فمن الضروري فهم الطرق المختلفة لعرض القيم السداسية بشكل فعال. تستكشف هذه المقالة الطرق والتقنيات المختلفة لطباعة القيم السداسية العشرية في لغة C++، مع تسليط الضوء على تطبيقاتها وحالات الاستخدام.

طباعة القيم السداسية باستخدام Std::hex

إحدى الطرق المباشرة لطباعة القيم السداسية العشرية في لغة C++ هي استخدام المعالج 'std::hex' الذي يوفره رأس . يقوم هذا المعالج بإرشاد دفق الإخراج لتفسير قيم الأعداد الصحيحة على أنها ست عشرية عند الطباعة. تخيل أن لديك صندوق كنز مليء بالأرقام. ولكن بدلاً من النظام العشري المعتاد، تمت كتابتها جميعًا باللغة السرية للنظام الست عشري. لفك رموز هذه الرموز والكشف عن قيمها الحقيقية، تقدم لغة C++ أداة مفيدة تسمى 'std::hex'. تعمل هذه الخدعة السحرية في مكتبة على تحويل تدفق الإخراج الخاص بك إلى حلقة فك ترميز، وترجمة تلك الأرقام السداسية العشرية الغامضة على الفور إلى نظيراتها العشرية المألوفة.







#تشمل
#تشمل
انت مين ( ) {
القيمة العشرية int = 907 ;
الأمراض المنقولة جنسيا::كوت << 'القيمة السداسية العشرية هي:' << الأمراض المنقولة جنسيا::عرافة << القيمة العشرية << ستد::endl;
يعود 0 ;
}


في هذا المثال، يتم تطبيق المعالج 'std::hex' على تدفق الإخراج 'std::cout' قبل طباعة العدد الصحيح 'decimalValue'. بعد طباعة القيمة السداسية، يعود الدفق إلى سلوكه الطبيعي. يوضح هذا الرمز بشكل مثالي كيفية طباعة قيمة سداسية عشرية باستخدام المعالج 'std::hex' في لغة C++. إليك تفاصيل الكود:



الرؤوس



: يتم استخدامه للإدخال/الإخراج الأساسي مثل الطباعة على وحدة التحكم ويوفر معالج 'std::hex' لتنسيق الإخراج كنظام سداسي عشري.





الوظيفة الأساسية

'القيمة العشرية int = 907؛' يعلن عن المتغير 'decimalValue' من النوع 'int' ويعينه بالقيمة العشرية 907.



'std::cout << 'القيمة السداسية العشرية هي: ' << std::hex << decimalValue << std::endl;' تتم طباعة 'القيمة السداسية العشرية:' متبوعة بالتمثيل السداسي العشري لـ 'القيمة العشرية'.

يوجه 'std::hex' تدفق الإخراج لتفسير القيمة التالية على أنها ست عشرية. يحتوي المتغير 'decimalValue' على القيمة العشرية المطلوب تحويلها إلى ست عشرية. يقوم 'std::endl' بإدراج حرف السطر الجديد بعد الطباعة. أخيرًا، يطبع هذا الرمز الآن 'القيمة السداسية العشرية: 38B' كما ترى في مقتطف الإخراج التالي:

طباعة القيم السداسية باستخدام محدد التنسيق '%x'.

بالنسبة لأولئك الذين هم على دراية بلغة البرمجة C، تقوم وظيفة 'printf' بطباعة القيم السداسية العشرية في لغة C++ بإيجاز. في حين أن لغة C++ تقدم نهج و'std::hex'، فإن 'printf' توفر طريقة موجزة ومباشرة لتحقيق نفس النتيجة.

#تشمل
انت مين ( ) {
القيمة العشرية int = 1256 ;
printf ( 'القيمة السداسية العشرية مع printf هي: %x ' ، القيمة العشرية ) ;
يعود 0 ;
}


في هذا المثال، يشير محدد التنسيق '%x' ضمن الدالة 'printf' إلى أنه يجب طباعة الوسيطة المقابلة بالنظام الست عشري. يعد الكود المعطى مثالًا مثاليًا لطباعة قيمة سداسية عشرية باستخدام 'printf' في لغة C++. دعونا نقسمها:

الرؤوس

: يتضمن هذا الرأس وظيفة 'printf' ووظائف الإدخال/الإخراج القياسية الأخرى. يتم تضمين رأس في مجموعة المكتبات التي تأتي مع C++. فهو يجلب الوظائف من مكتبة للغة C، مما يسمح لـ C++ باستخدام تقنيات الإدخال والإخراج الكلاسيكية الموجودة في الأصل في لغة C من خلال تضمين .

الوظيفة الأساسية

'القيمة العشرية int = 1256؛' يعلن ويعين القيمة العشرية 1256 لمتغير صحيح يسمى 'decimalValue'. 'printf' في 'printf('القيمة السداسية العشرية مع printf هي: %x\n'، القيمة العشرية)؛' يستدعي البيان الدالة 'printf' لطباعة الإخراج المنسق. '%x' هو 'محدد التنسيق' الذي يشير إلى أنه يجب طباعة الوسيطة التالية كرقم سداسي عشري صغير. وأخيرًا، يقوم '\n' بإدراج حرف السطر الجديد بعد الطباعة. يُخرج هذا الرمز 'القيمة السداسية العشرية مع printf هي 4e8' إلى وحدة التحكم كما هو موضح في مقتطف الإخراج التالي:

طباعة القيم السداسية باستخدام الحشو

عند التعامل مع القيم السداسية العشرية، وخاصة عناوين الذاكرة، غالبًا ما يكون العرض أو الحشو المتسق أمرًا مرغوبًا فيه. يمكن تحقيق ذلك باستخدام معالج 'std::setw' الذي يوفره رأس . فيما يلي مثال على كيفية طباعة قيمة HEX باستخدام الحشو. يوضح هذا البرنامج كيفية طباعة قيمة سداسية عشرية في لغة C++ مع الحشو باستخدام رأس وأساليب المعالج.

#تشمل
#تشمل
انت مين ( ) {
القيمة العشرية int = 47 ;
الأمراض المنقولة جنسيا::كوت << 'القيمة السداسية العشرية مع الحشو هي:' << الأمراض المنقولة جنسيا::setw ( 8 ) << الأمراض المنقولة جنسيا::عرافة << القيمة العشرية << ستد::endl;
يعود 0 ;
}


في هذا المثال، يضمن std::setw(8)‎ طباعة القيمة السداسية العشرية بعرض لا يقل عن 8 أحرف. وهذا مفيد بشكل خاص لمحاذاة القيم في الأعمدة أو مع عناوين الذاكرة.

دعونا نحلل الكود ونفهم كل سطر واحدًا تلو الآخر:

الرؤوس

: يوفر وظيفة الإدخال/الإخراج الأساسية مثل الدفق 'std::cout' للطباعة.

: يوفر أدوات معالجة التنسيق مثل 'std::setw' المستخدمة لتعديل مظهر الإخراج.

الوظيفة الأساسية

'القيمة العشرية int = 47؛' يعلن ويعين القيمة العشرية 47 لمتغير صحيح يسمى 'decimalValue'.

'std::cout << 'القيمة السداسية العشرية مع الحشو هي: ' << std::setw(8) << std::hex << decimalValue << std::endl;' تقوم العبارة بطباعة الرقم الست عشري 47 مع حشوة setw(8). يطبق 'std::setw(8)' معالج 'std::setw' بوسيطة قدرها 8، مع تحديد الحد الأدنى لعرض الإخراج وهو 8 أحرف.

يطبق 'std::hex' معالج 'std::hex' الذي يخبر الدفق بتفسير القيمة التالية على أنها ست عشرية كما هو موضح في أحد الأمثلة المذكورة. تتم طباعة الإخراج التالي على وحدة التحكم:

طباعة القيم السداسية لبيانات البايت

عند التعامل مع بيانات البايت، من الشائع تمثيل كل بايت كقيمة سداسية عشرية مكونة من رقمين. يمكن تحقيق ذلك من خلال التأكد من ضبط العرض على 2 واستخدام 'std::setfill('0')' لملء الأصفار البادئة. فيما يلي مثال لمساعدتك على فهم كيفية طباعة القيم السداسية لبيانات البايت:

#تشمل
#تشمل
انت مين ( ) {
unsigned char byteData = 0xAB;
الأمراض المنقولة جنسيا::كوت << 'التمثيل السداسي العشري لبيانات البايت هو:'
<< الأمراض المنقولة جنسيا::setw ( 2 ) << الأمراض المنقولة جنسيا::setfill ( '0' ) << الأمراض المنقولة جنسيا::عرافة << static_cast < كثافة العمليات > ( byteData )
<< ستد::endl;
يعود 0 ;
}


هنا، يضمن 'std::setw(2)' تمثيل كل بايت بحد أدنى لعرض حرفين، ويحدد 'std::setfill('0')' أنه يجب استخدام الأصفار البادئة لملء العرض.

يوضح هذا البرنامج المقدم مسبقًا طريقة أكثر تقدمًا لطباعة قيمة سداسية عشرية في لغة C++ بتنسيق محدد. دعونا نقسمها للحصول على فهم أفضل:

الرؤوس

: يوفر وظيفة الإدخال/الإخراج الأساسية مثل 'std::cout' و'std::hex' للطباعة.

: يقدم أدوات معالجة التنسيق مثل 'std::setw' و'std::setfill' التي يتم استخدامها لتعديل مظهر الإخراج.

الوظيفة الأساسية

في الوظيفة الرئيسية، 'byteData = 0xAB;' غير موقعة. يتم تعريف char الذي يعلن عن متغير char غير موقّع باسم 'byteData' ويعين له القيمة السداسية العشرية '0xAB'. 'std::cout << 'التمثيل السداسي العشري لبيانات البايت هو: عبارة ':' تقوم بإخراج الرسالة إلى وحدة التحكم باستخدام دفق الإخراج.

'<< std::setw(2) << std::setfill('0') << std::hex << static_cast (byteData) << std::endl;' تطبق سلسلة البيانات معالجات متعددة لتنسيق الإخراج.

std::setw(2): يقوم بتعيين الحد الأدنى لعرض الإخراج إلى حرفين.

std::setfill('0'): يحدد أنه يجب ملء أي مساحة حشوة مطلوبة للوصول إلى الحد الأدنى للعرض بالحرف '0'.

std::hex: يطلب من الدفق تفسير القيمة التالية على أنها ست عشرية.

static_cast (byteData): يرسل بيانات الأحرف غير الموقعة إلى 'int' قبل التحويل إلى النظام الست عشري. هذا ليس ضروريًا من الناحية الفنية ولكن يمكن استخدامه للتوافق مع بعض خيارات التنسيق.

std::endl: يُدرج حرف السطر الجديد بعد الطباعة.

يظهر إخراج هذا البرنامج المطبوع على وحدة التحكم في المقتطف التالي:

خاتمة

تتضمن طباعة القيم السداسية العشرية في لغة C++ فهم الأدوات المتاحة واختيار الطريقة المناسبة بناءً على المتطلبات المحددة. سواء اخترت أداة المعالجة 'std::hex'، أو وظيفة 'printf'، أو مجموعة من أدوات التنسيق للحشو والأصفار البادئة، فإن الحصول على فهم قوي لهذه التقنيات يعد أمرًا ضروريًا لأي مبرمج C++. من خلال تطبيق هذه الأساليب بشكل مدروس، يمكنك التأكد من عرض القيم السداسية العشرية بدقة وبتنسيق جذاب بصريًا مما يساهم في سهولة القراءة والوضوح الشامل لتعليمات C++ البرمجية الخاصة بك.