הדפסת ערכי Hex ב-C++

Hdpst Rky Hex B C



בתכנות C++, הדפסת ערכים הקסדצימליים היא דרישה נפוצה. בין אם עובדים עם כתובות זיכרון, ביצוע פעולות Bitwise או התמודדות עם ייצוגים הקסדצימליים של נתונים, חיוני להבין את השיטות השונות כדי להציג ביעילות את ערכי הקסדצימליים. מאמר זה בוחן את השיטות והטכניקות השונות להדפסת הערכים ההקסדצימליים ב-C++, תוך שופך אור על היישומים ומקרי השימוש שלהם.

הדפסת ערכי Hex באמצעות Std::hex

דרך פשוטה אחת להדפיס את הערכים ההקסדצימליים ב-C++ היא שימוש במניפולטור 'std::hex' המסופק על ידי הכותרת . מניפולטור זה מורה לזרם הפלט לפרש את ערכי המספרים השלמים כהקסדצימליים בעת ההדפסה. תאר לעצמך שיש לך תיבת אוצר מלאה במספרים. אבל במקום השיטה העשרונית הרגילה, כולם כתובים בשפה הסודית של הקסדצימלית. כדי לפענח את הקודים הללו ולחשוף את הערכים האמיתיים שלהם, C++ מציע כלי מועיל בשם 'std::hex'. טריק הקסם הזה בספריית הופך את זרם הפלט שלך לטבעת מפענח, ומתרגם באופן מיידי את המספרים ההקסדצימליים המסתוריים האלה לעמיתיהם העשרוניים המוכרים.







#include
#include
int main ( ) {
int decimalValue = 907 ;
std::cout << 'הערך ההקסדצימלי הוא:' << std::hex << ערך עשרוני << std::endl;
לַחֲזוֹר 0 ;
}


בדוגמה זו, המניפולטור 'std::hex' מוחל על זרם הפלט 'std::cout' לפני הדפסת המספר השלם 'decimalValue'. לאחר הדפסת ערך הhex, הזרם חוזר להתנהגותו הרגילה. קוד זה מדגים בצורה מושלמת כיצד להדפיס ערך הקסדצימלי באמצעות המניפולטור 'std::hex' ב-C++. להלן פירוט של הקוד:



כותרות



: הוא משמש לקלט/פלט בסיסי כמו הדפסה למסוף ומספק את המניפולטור 'std::hex' כדי לעצב את הפלט כהקסדצימלי.





פונקציה עיקרית

ה-'int decimalValue = 907;' מכריז על המשתנה 'decimalValue' מהסוג 'int' ומקצה לו את הערך העשרוני של 907.



ה-'std::cout << 'הערך ההקסדצימלי הוא: ' << std::hex << decimalValue << std::endl;' מדפיס את 'ערך הקסדצימלי:' ואחריו הייצוג ההקסדצימלי של 'ערך עשרוני'.

ה-'std::hex' מורה לזרם הפלט לפרש את הערך הבא כהקסדצימלי. המשתנה 'decimalValue' מכיל את הערך העשרוני שיש להמיר להקסה. ה-'std::endl' מוסיף תו חדש לאחר ההדפסה. לבסוף, קוד זה מדפיס כעת את 'ערך הקסדצימלי: 38B' כפי שניתן לראות בקטע הפלט הבא:

הדפסת ערכי Hex באמצעות מפרט הפורמט '%x'.

למי שמכיר את שפת התכנות C, הפונקציה 'printf' מדפיסה בתמציתיות את הערכים ההקסדצימליים ב-C++. בעוד ש-C++ מציע את גישת ו-'std::hex', 'printf' מספק דרך תמציתית וישירה להשיג את אותה תוצאה.

#include
int main ( ) {
int decimalValue = 1256 ;
printf ( 'הערך ההקסדצימלי עם printf הוא: %x \n ' , ערך עשרוני ) ;
לַחֲזוֹר 0 ;
}


בדוגמה זו, מפרט הפורמט '%x' בתוך הפונקציה 'printf' מציין שיש להדפיס את הארגומנט המתאים בהקסדצימלי. הקוד הנתון הוא דוגמה מושלמת להדפסת ערך הקסדצימלי באמצעות 'printf' ב-C++. בואו נפרק את זה:

כותרות

: כותרת זו כוללת את הפונקציה 'printf' ושאר פונקציות הקלט/פלט הסטנדרטיות. הכותרת כלולה בחבילת הספריות המגיעות עם C++. היא מביאה את הפונקציונליות מספריית של שפת C, ומאפשרת ל-C++ להשתמש בטכניקות הקלט והפלט הקלאסיות שנמצאות במקור ב-C דרך ההכללה .

פונקציה עיקרית

ה-'int decimalValue = 1256;' מצהיר ומקצה את הערך העשרוני של 1256 למשתנה מספר שלם בשם 'decimalValue'. ה-'printf' ב-'printf('הערך ההקסדצימלי עם printf הוא: %x\n', decimalValue);' המשפט קורא לפונקציה 'printf' כדי להדפיס את הפלט המעוצב. ה-'%x' הוא 'מפרט הפורמט' המציין שיש להדפיס את הארגומנט הבא כמספר הקסדצימלי באותיות קטנות. לבסוף, '\n' מוסיף תו חדש לאחר ההדפסה. קוד זה מוציא 'הערך הקסדצימלי עם printf הוא 4e8' לקונסולה כפי שניתן לראות בקטע הפלט הבא:

הדפסת ערכי hex עם ריפוד

כאשר עוסקים בערכים הקסדצימליים, במיוחד כתובות זיכרון, לרוב רצוי רוחב או ריפוד עקביים. ניתן להשיג זאת באמצעות המניפולטור 'std::setw' המסופק על ידי הכותרת . הנה דוגמה כיצד להדפיס ערך HEX עם ריפוד. תוכנית זו מדגימה כיצד להדפיס ערך הקסדצימלי ב-C++ עם ריפוד באמצעות שיטות הכותרת והמניפולטור .

#include
#include
int main ( ) {
int decimalValue = 47 ;
std::cout << 'הערך הקסדצימלי עם ריפוד הוא:' << std::setw ( 8 ) << std::hex << ערך עשרוני << std::endl;
לַחֲזוֹר 0 ;
}


בדוגמה זו, std::setw(8) מבטיח שהערך ההקסדצימלי מודפס ברוחב מינימלי של 8 תווים. זה שימושי במיוחד ליישור הערכים בעמודות או עם כתובות זיכרון.

הבה נשבור את הקוד ונבין כל שורה אחת אחת:

כותרות

: היא מספקת את פונקציונליות הקלט/פלט הבסיסית כמו זרם 'std::cout' להדפסה.

: הוא מציע את מניפולטורי העיצוב כמו “std::setw” המשמשים לשינוי מראה הפלט.

פונקציה עיקרית

ה-'int decimalValue = 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' שאומר לזרם לפרש את הערך הבא כהקסדצימלי כפי שהוסבר באחת מהדוגמאות הנתונות. הפלט הבא מודפס למסוף:

הדפסת ערכי Hex של נתוני בייט

כאשר עובדים עם נתוני בתים, מקובל לייצג כל בייט כערך הקסדצימלי דו ספרתי. ניתן להשיג זאת על ידי הקפדה על הגדרת הרוחב ל-2 ושימוש ב-'std::setfill('0')' כדי למלא את האפסים המובילים. להלן דוגמה שתעזור לך להבין כיצד ניתן לבצע הדפסת ערכי hex של נתוני בתים:

#include
#include
int main ( ) {
char unsigned byteData = 0xAB;
std::cout << 'הייצוג ההקסדצימלי של נתוני בתים הוא: '
<< std::setw ( 2 ) << std::setfill ( '0' ) << std::hex << static_cast < int > ( byteData )
<< std::endl;
לַחֲזוֹר 0 ;
}


כאן, 'std::setw(2)' מבטיח שכל בייט מיוצג ברוחב מינימלי של 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): הוא מגדיר את רוחב הפלט המינימלי ל-2 תווים.

std::setfill('0'): מציין שכל ריפוד שדרוש כדי להגיע לרוחב המינימלי צריך להיות מלא בתו '0'.

std::hex: זה אומר לזרם לפרש את הערך הבא כהקסדצימלי.

static_cast (byteData): הוא מעביר את נתוני ה-char הלא חתומים ל 'int' לפני המרה להקסדצימלי. זה אינו הכרחי מבחינה טכנית אך ניתן להשתמש בו לצורך עקביות עם כמה אפשרויות עיצוב.

std::endl: הוא מוסיף תו חדש לאחר ההדפסה.

הפלט של תוכנית זו המודפס על המסוף מוצג בקטע הבא:

סיכום

הדפסת ערכים הקסדצימליים ב-C++ כרוכה בהבנת הכלים הזמינים ובחירת השיטה המתאימה על סמך הדרישות הספציפיות. בין אם תבחר במניפולטור 'std::hex', בפונקציית 'printf' או שילוב של כלי עיצוב לריפוד ואפסים מובילים, הבנה מוצקה של טכניקות אלו חיונית לכל מתכנת C++. על ידי יישום שיטות אלה בצורה מחושבת, אתה יכול להבטיח שהערכים ההקסדצימליים שלך מוצגים בצורה מדויקת ובפורמט מושך מבחינה ויזואלית התורמים לקריאות ולבהירות הכללית של קוד C++ שלך.