التحويل بين binary , hex , decimal , char

تم تحميل الصفحة في 1,1041456 ثانية
التحويل بين binary , hex , decimal , char

عـبـدالـله

.:: أبو مـحـمـد : مُشرف قسم python ::.
rankrankrankrankrank
إنضم
5 ديسمبر 2013
المشاركات
2,198
الإعجابات
2,841
النقاط
198
السلام عليكم ورحمة الله وبركاته

اقوم بالتطبيق على كيفية فهم التحويل بين الـ binary , hexdecimal , decimal , char

بشكل عملي بعدما درسة مفهومها بشكل نظري وتعمقة به مع اكثر من لغة برمجية .

استخدم لغة الـ ++C بهذا الكود .

اريد شخص يسهل الطريقه اذا كانت هناك طريقه اخرى للتحويل ايضآ بلغة ++C

هذا الكود :

C++:
#include <iostream>
#include <bitset>

using namespace std;

int main()


{
    cout << "|  Binary" << "   Char" << " Dec" << "   Hex  |" << endl;
    for(unsigned int i= 0x041; i<= 0x05a; i++ /* this is a hexdecimal */){

       string binary = bitset<8>(i).to_string(); // convert hexdecimal to binary
       unsigned int decimal = bitset<8>(binary).to_ulong(); // convert binary to decimal
       char charactor = char(decimal); // convert decimal to char
       cout << "|"<<" ";
       cout << binary << " | "; // output binary
       cout << charactor << " | "; // output char
       cout << decimal << " | "; // output decimal
       cout << "0x0" << hex << decimal << dec << " | "; // convert decimal to hexdecimal & output hexdecimal

       cout << endl;
    }

    cout << endl;

    return 0;
}

وهذي المخرجات .




ملاحظه : لا اريد التطبيق بلغة الـ C

اعلم انها ابسط من لغة الـ ++C في التحويل .

من خلال كتابة رموز x% و s% و d% فيما يتعلق بلغة الـ C


اريد التبسيط بلغة الـ ++C فقط

هل هناك طريقه ابسط من هذا .

وشكرآ
 
إنضم
18 أغسطس 2010
المشاركات
143
الإعجابات
103
النقاط
43
وعليكم السلام

يمكن تبسيط الكود عموما من ناحية انه يكون منظم اكثر واسهل للقراءه

بالنسبه للتحويل

لا داعي للتحويل من binary
الي deciaml
وثم الي
char

يمكنك استخدام الـ
كود:
std:dec , std:oct , std:hex
للتحويل الي عشري و هيكس و ثماني ايضا

و استخدام الـ bitset مره واحده فقط للتحويل الي ثنائي

ولاحظ الـ loop بدلا من استخدام الهيكس يمكنك كتابه الحرف نفسه

C++:
#include <iostream>
#include <bitset>

using namespace std;

int main()


{
    cout << "|  Binary" << "   Char" << " Dec" << "   Hex  |" << endl;
    for(unsigned int alpha= 'A'; alpha<= 'Z'; alpha++ ){ // use char instead of hex - better code readability

       string binary = bitset<8>(alpha).to_string(); // convert char to binary
      
       cout << "|"<<" ";
       cout << binary << " | ";
       cout << char(alpha) << " | ";  // cast as char
       cout << dec << alpha << " | "; // use std::dec
       cout << "0x0" << hex << alpha  << " | "; // use std::hex

       cout << endl;
    }

    return 0;
}
 

عـبـدالـله

.:: أبو مـحـمـد : مُشرف قسم python ::.
rankrankrankrankrank
إنضم
5 ديسمبر 2013
المشاركات
2,198
الإعجابات
2,841
النقاط
198
ممتاز اصبح اكثر تنظيم وابسط واسهل للقراءه .

ما كنت اتوقع ان لغة الـ ++C اصبحت اسهل بكثير عما كانت عنه في الاصدارات السابقه .

حاليآ اصبحت اكثر شمولآ وابسط .

ربما لانها اخذت حيز الانتشار والترتيب .! والتطوير ايضآ

والملاحظه التي لاحظتها بعد التركيز عليها ان المكتبات التي فيها هيا نفس المكتبات التي باللغات الاخرى .

اللهم ان المكتبات في السي بلس بلس غير مرتبه مبعثره وتحتاج الى اضافتها في عملك مثل map , set , الخ من المكتبات التي تتوفر في اللغات الحديثه واكثر ترتيبآ

على العموم اشكرك بعنف سهلت عليه الكود واصبح اكثر تنظيم من ذي قبل .

شكرآ لك

وبارك الله فيك .

بخصوص الهيكس انا متعمد اضعه بدلآ من الاحرف .
 

عـبـدالـله

.:: أبو مـحـمـد : مُشرف قسم python ::.
rankrankrankrankrank
إنضم
5 ديسمبر 2013
المشاركات
2,198
الإعجابات
2,841
النقاط
198
وايضآ ربما لان الـ Qt سهل التعامل مع الواجهات بلغة الـ ++C

بصراحه عمل الـ Qt يشكر عليه القائمين به بسط التعامل مع الـ ++C واصبح بمقدور اي شخص يبدء في الـ ++C

انا اراه افضل من فيجوال استديو في التعامل مع الواجهات .
 
إنضم
18 أغسطس 2010
المشاركات
143
الإعجابات
103
النقاط
43
عفوا

بالنسبه للمكتبات عندما تعتاد عليها ستجدها بسيطه وايضا معظم الـ ide يقوم باضافتها تلقائيا
ربما الصعوبه تكمن في كم الاختيارات المتاحه لان اللغه الان اصبحت ضخمه جدا
بداية من الـ C++11 الي C++17

بالنسبه للـ QT
بالفعل رائعه
هذه مكتبه لعمل الواجهات وهي Cross platform
تعمل علي لينكس ويندوز وهكذا

يمكنك بالطبع استخدام مكتبات الويندوز
gdi,gdi+,MFC
ستعمل علي ويندوز فقط

اذا كنت تقصد بيئة التطوير كمحرر النصوص الذي ينزل مع المكتبه QT
انه افضل من فيجوال ستوديو
ربما لانه اخف وايضا لانه الافضل عند العمل علي لينكس الا اذا كنت تفضل استخدام الـ vim .
 

عـبـدالـله

.:: أبو مـحـمـد : مُشرف قسم python ::.
rankrankrankrankrank
إنضم
5 ديسمبر 2013
المشاركات
2,198
الإعجابات
2,841
النقاط
198
نعم اقصد Qt Creator IDE افضل لدي لعددته اسباب منها

انه لا يرغمك على استخدام compiler محدد هذا اولآ

وثانيآ امكانية نقل البرنامج من نظام الى آخر بدون تغيير الكود البرمجي الا في حالات قليله

وثالثآ ترتيب الـ documentation جميل به يسهل عليك الوصول للمطلوب مع اضافة امثله لعددته خيارات لك .

ورابعآ يدعم لغات اخرى كا البايثون والسي والجافا للاندرويد .

وخفيف على الجهاز

انا افضل استخدام Qt Creator and MinGW

بخصوص المكتبات لا بأس بما ان الشخص لديه معرفه مسبقه في برمجه اخرى يسهل عليه اختيار ما يناسبه في عمله ومعرفة المكتبة المطلوبه .

استخدم C++ 11 وسهلة عليه الكثير للمعرفه .


تقبل تحياي .
 

الأعضاء النشطين حاليآ الذين يشاهدون هذا الموضوع (1 عضو و 0 ضيف)

خيارات الاستايل

نوع الخط
مودك
اخفاء السايدر بار OFF
توسيط المنتدى OFF
فصل الأقسام OFF
الأقسام الفرعية OFF
عرض المشاركات
حجم الخط
معلومات العضو OFF
إخفاء التوقيع OFF

إرجاع خيارات الإستايل