Hexadecimális értékek nyomtatása C++ nyelven

Hexadecimalis Ertekek Nyomtatasa C Nyelven



A C++ programozásban általános követelmény a hexadecimális értékek nyomtatása. Akár memóriacímekkel dolgozik, akár bitenkénti műveleteket hajt végre, vagy adatok hexadecimális ábrázolásával foglalkozik, elengedhetetlen a különböző módszerek megértése a hexadecimális értékek hatékony megjelenítéséhez. Ez a cikk a hexadecimális értékek C++ nyelven történő nyomtatásának különböző módszereit és technikáit tárja fel, megvilágítva azok alkalmazásait és használati eseteit.

A hexadecimális értékek kinyomtatása a Std::hex használatával

A hexadecimális értékek C++ nyelven történő kinyomtatásának egyik egyszerű módja az fejléc által biztosított „std::hex” manipulátor használata. Ez a manipulátor arra utasítja a kimeneti adatfolyamot, hogy nyomtatáskor az egész értékeket hexadecimálisként értelmezze. Képzeld el, hogy van egy számokkal teli kincsesládád. De a szokásos decimális rendszer helyett mindegyik a hexadecimális titkos nyelven van írva. E kódok megfejtéséhez és valódi értékük felfedéséhez a C++ egy „std::hex” nevű hasznos eszközt kínál. Ez a bűvös trükk az könyvtárban a kimeneti adatfolyamot dekódergyűrűvé alakítja, és azonnal lefordítja ezeket a titokzatos hexadecimális számokat ismerős decimális megfelelőikre.







#include
#include
int fő ( ) {
int decimalValue = 907 ;
std::cout << 'A hexadecimális érték a következő: << std::hex << decimalValue << std::endl;
Visszatérés 0 ;
}


Ebben a példában az „std::hex” manipulátort alkalmazzuk az „std::cout” kimeneti adatfolyamra a „decimalValue” egész szám kinyomtatása előtt. A hexadecimális érték kinyomtatása után az adatfolyam visszaáll normál működéséhez. Ez a kód tökéletesen bemutatja, hogyan nyomtathat ki hexadecimális értéket az „std::hex” manipulátor segítségével C++ nyelven. Íme a kód bontása:



Fejlécek



: Alapvető bemenetre/kimenetre, például a konzolra való nyomtatásra használatos, és biztosítja az „std::hex” manipulátort a kimenet hexadecimális formázásához.





Fő funkció

Az „int decimalValue = 907;” deklarálja az „int” típusú „decimalValue” változót, és hozzárendeli a 907 decimális értékhez.



Az 'std::cout << 'A hexadecimális érték: ' << std::hex << decimalValue << std::endl;' kiírja a „Hexadecimal value:” értéket, majd a „decimalValue” hexadecimális megjelenítését.

Az „std::hex” arra utasítja a kimeneti adatfolyamot, hogy a következő értéket hexadecimálisként értelmezze. A „decimalValue” változó tartalmazza a hexadecimális értékké konvertálandó decimális értéket. Az „std::endl” újsor karaktert szúr be a nyomtatás után. Végül ez a kód a „Hexadecimális érték: 38B” értéket írja ki, amint az a következő kimeneti kódrészletben látható:

A hexadecimális értékek nyomtatása a „%x” formátummeghatározó használatával

Azok számára, akik ismerik a C programozási nyelvet, a “printf” függvény tömören kiírja a hexadecimális értékeket C++ nyelven. Míg a C++ az és az „std::hex” megközelítést kínálja, a „printf” tömör és közvetlen módot biztosít ugyanazon eredmény elérésére.

#include
int fő ( ) {
int decimalValue = 1256 ;
printf ( 'A printf hexadecimális értéke: %x \n ' , decimalValue ) ;
Visszatérés 0 ;
}


Ebben a példában a „%x” formátummeghatározó a „printf” függvényen belül azt jelzi, hogy a megfelelő argumentumot hexadecimálisan kell kinyomtatni. A megadott kód tökéletes példa a hexadecimális érték nyomtatására a „printf” használatával C++ nyelven. Bontsuk szét:

Fejlécek

: Ez a fejléc tartalmazza a „printf” függvényt és a többi szabványos bemeneti/kimeneti funkciót. A fejléc a C++-hoz tartozó könyvtárak csomagjában található. Behozza a funkcionalitást a C nyelv könyvtárából, lehetővé téve a C++ számára, hogy használja a klasszikus bemeneti és kimeneti technikákat, amelyek eredetileg a C nyelvben találhatók a befoglalás révén.

Fő funkció

Az „int decimalValue = 1256;” deklarálja és hozzárendeli az 1256 decimális értéket egy „decimalValue” nevű egész változóhoz. A „printf” a „printf(“A printf hexadecimális értéke: %x\n, decimalValue);” utasítás meghívja a „printf” függvényt a formázott kimenet kinyomtatásához. A „%x” a „formátummeghatározó”, amely azt jelzi, hogy a következő argumentumot kisbetűs hexadecimális számként kell kinyomtatni. Végül a „\n” egy újsor karaktert szúr be a nyomtatás után. Ez a kód „A printf hexadecimális értéke 4e8” adja ki a konzolt, amint az a következő kimeneti kódrészletben látható:

A hexadecimális értékek nyomtatása kitöltéssel

A hexadecimális értékek, különösen a memóriacímek kezelésekor gyakran kívánatos az egységes szélesség vagy kitöltés. Ez az fejléc által biztosított „std::setw” manipulátorral érhető el. Íme egy példa a HEX érték kitöltéssel történő nyomtatására. Ez a program bemutatja, hogyan nyomtathat ki hexadecimális értéket C++ nyelven kitöltéssel az fejléc és manipulátor módszerekkel.

#include
#include
int fő ( ) {
int decimalValue = 47 ;
std::cout << 'A hexadecimális érték kitöltéssel a következő: << std::setw ( 8 ) << std::hex << decimalValue << std::endl;
Visszatérés 0 ;
}


Ebben a példában az std::setw(8) biztosítja, hogy a hexadecimális érték legalább 8 karakter szélességű legyen. Ez különösen hasznos az oszlopok vagy a memóriacímek értékeinek igazítására.

Törjük meg a kódot, és értsük meg egyenként az egyes sorokat:

Fejlécek

: Az alapvető bemeneti/kimeneti funkciókat biztosítja, például az „std::cout” adatfolyamot a nyomtatáshoz.

: Formázási manipulátorokat kínál, például „std::setw”, amelyek a kimenet megjelenésének módosítására szolgálnak.

Fő funkció

Az „int decimalValue = 47;” deklarálja és hozzárendeli a 47-es decimális értéket egy „decimalValue” nevű egész változóhoz.

Az 'std::cout << 'A hexadecimális érték kitöltéssel: ' << std::setw(8) << std::hex << decimalValue << std::endl;' Az utasítás a 47 hexadecimális számot írja ki a setw(8) kitöltéssel. Az „std::setw(8)” az „std::setw” manipulátort használja 8-as argumentummal, és 8 karakteres minimális kimeneti szélességet ad meg.

Az „std::hex” az „std::hex” manipulátort alkalmazza, amely arra utasítja a folyamot, hogy a következő értéket hexadecimálisként értelmezze, amint azt az egyik adott példában ismertetjük. A következő kimenet kerül kinyomtatásra a konzolra:

A bájtadatok hexadecimális értékeinek kinyomtatása

Amikor bájtadatokkal dolgozik, gyakori, hogy minden bájtot kétjegyű hexadecimális értékként ábrázolnak. Ezt úgy érheti el, hogy a szélesség 2-re van állítva, és az „std::setfill('0')” használatával tölti ki a kezdő nullákat. Az alábbi példa segít megérteni, hogyan lehet a bájtadatok hexadecimális értékeit kinyomtatni:

#include
#include
int fő ( ) {
előjel nélküli karakter byteData = 0xAB;
std::cout << 'A bájtadatok hexadecimális ábrázolása a következő:
<< std::setw ( 2 ) << std::setfill ( '0' ) << std::hex << static_cast < int > ( byteData )
<< std::endl;
Visszatérés 0 ;
}


Itt az „std::setw(2)” biztosítja, hogy minden bájt legalább 2 karakter széles legyen, az „std::setfill('0')” pedig azt határozza meg, hogy a kezdő nullákat kell használni a szélesség kitöltéséhez.

Ez a korábban megadott program egy fejlettebb megközelítést mutat be a hexadecimális értékek C++ nyelven történő nyomtatására meghatározott formázással. Bontsuk fel, hogy jobban megértsük:

Fejlécek

: Olyan alapvető bemeneti/kimeneti funkciókat biztosít, mint az „std::cout” és az „std::hex” a nyomtatáshoz.

: Olyan formázási manipulátorokat kínál, mint az „std::setw” és „std::setfill”, amelyek a kimenet megjelenésének módosítására szolgálnak.

Fő funkció

A fő függvényben egy előjel nélküli „byteData = 0xAB;” A char egy „byteData” nevű előjel nélküli char változót deklarál, és hozzárendeli a „0xAB” hexadecimális értéket. Az „std::cout << „A bájtadatok hexadecimális reprezentációja: „:” utasítás a kimeneti adatfolyam segítségével adja ki az üzenetet a konzolnak.

A „<< std::setw(2) << std::setfill(‘0’) << std::hex << static_cast (byteData) << std::endl;” Az utasításlánc több manipulátort alkalmaz a kimenet formázásához.

std::setw(2): A minimális kimeneti szélességet 2 karakterre állítja be.

std::setfill('0'): Meghatározza, hogy a minimális szélesség eléréséhez szükséges kitöltéseket „0” karakterrel kell kitölteni.

std::hex: utasítja az adatfolyamot, hogy a következő értéket hexadecimálisként értelmezze.

static_cast (byteData): Az előjel nélküli karakteradatokat „int”-be önti, mielőtt hexadecimálissá alakítaná. Ez technikailag nem szükséges, de bizonyos formázási beállításokkal való konzisztencia érdekében használható.

std::endl: Nyomtatás után újsor karaktert szúr be.

Ennek a programnak a konzolra nyomtatott kimenete a következő részletben látható:

Következtetés

A hexadecimális értékek C++ nyelven történő nyomtatása magában foglalja a rendelkezésre álló eszközök megértését és a megfelelő módszer kiválasztását az adott követelmények alapján. Függetlenül attól, hogy az „std::hex” manipulátort, a „printf” funkciót vagy a formázási eszközök kombinációját választja a kitöltéshez és a kezdő nullákhoz, ezeknek a technikáknak a szilárd ismerete elengedhetetlen minden C++ programozó számára. E módszerek átgondolt alkalmazásával biztosíthatja, hogy hexadecimális értékei pontosan és tetszetős formátumban jelenjenek meg, ami hozzájárul a C++ kód általános olvashatóságához és egyértelműségéhez.