Tlač hexadecimálnych hodnôt v C++

Tlac Hexadecimalnych Hodnot V C



V programovaní v C++ je tlač hexadecimálnych hodnôt bežnou požiadavkou. Či už pracujete s pamäťovými adresami, vykonávate bitové operácie alebo sa zaoberáte hexadecimálnymi reprezentáciami údajov, je nevyhnutné pochopiť rôzne metódy na efektívne zobrazenie hexadecimálnych hodnôt. Tento článok skúma rôzne metódy a techniky tlače hexadecimálnych hodnôt v C++, čím objasňuje ich aplikácie a prípady použitia.

Tlač hexadecimálnych hodnôt pomocou Std::hex

Jedným z priamych spôsobov tlače hexadecimálnych hodnôt v C++ je použitie manipulátora „std::hex“, ktorý poskytuje hlavička . Tento manipulátor dáva pokyn výstupnému toku, aby pri tlači interpretoval celočíselné hodnoty ako hexadecimálne. Predstavte si, že máte pokladnicu plnú čísel. Ale namiesto obvyklého desiatkového systému sú všetky napísané v tajnom hexadecimálnom jazyku. Na dešifrovanie týchto kódov a odhalenie ich skutočných hodnôt ponúka C++ užitočný nástroj s názvom „std::hex“. Tento magický trik v knižnici premení váš výstupný tok na dekodérový kruh a okamžite prevedie tieto záhadné šestnástkové čísla na ich známe desiatkové náprotivky.







#include
#include
int main ( ) {
int decimalValue = 907 ;
std::cout << 'Šestnástková hodnota je: ' << std::hex << decimalValue << std::endl;
vrátiť 0 ;
}


V tomto príklade sa manipulátor „std::hex“ použije na výstupný tok „std::cout“ pred vytlačením celého čísla „decimalValue“. Po vytlačení hexadecimálnej hodnoty sa prúd vráti do normálneho správania. Tento kód dokonale ukazuje, ako vytlačiť hexadecimálnu hodnotu pomocou manipulátora „std::hex“ v C++. Tu je rozpis kódu:



Hlavičky



: Používa sa na základný vstup/výstup, ako je tlač do konzoly, a poskytuje manipulátor „std::hex“ na formátovanie výstupu ako hexadecimálneho.





Hlavná funkcia

Hodnota „int decimalValue = 907;“ deklaruje premennú „decimalValue“ typu „int“ a priradí jej desatinnú hodnotu 907.



„std::cout << „Šestnástková hodnota je: ” << std::hex << desiatkováHodnota << std::endl;” vytlačí „Hexadecimálna hodnota:“, po ktorej bude nasledovať hexadecimálna reprezentácia „decimalValue“.

„std::hex“ dáva výstupnému streamu pokyn, aby nasledujúcu hodnotu interpretoval ako hexadecimálnu. Premenná „decimalValue“ obsahuje desatinnú hodnotu, ktorá sa má previesť na hex. „std::endl“ vloží po vytlačení znak nového riadku. Nakoniec tento kód teraz vypíše „hexadecimálnu hodnotu: 38B“, ako môžete vidieť v nasledujúcom útržku výstupu:

Tlač hexadecimálnych hodnôt pomocou špecifikátora formátu „%x“.

Pre tých, ktorí poznajú programovací jazyk C, funkcia „printf“ výstižne vypíše hexadecimálne hodnoty v C++. Zatiaľ čo C++ ponúka prístup a „std::hex“, „printf“ poskytuje stručný a priamy spôsob, ako dosiahnuť rovnaký výsledok.

#include
int main ( ) {
int decimalValue = 1256 ;
printf ( 'Šestnástková hodnota s printf je: %x \n ' , desatinná hodnota ) ;
vrátiť 0 ;
}


V tomto príklade špecifikátor formátu „%x“ v rámci funkcie „printf“ označuje, že zodpovedajúci argument by sa mal vytlačiť v šestnástkovej sústave. Daný kód je dokonalým príkladom tlače hexadecimálnej hodnoty pomocou „printf“ v C++. Poďme si to rozobrať:

Hlavičky

: Táto hlavička obsahuje funkciu „printf“ a ďalšie štandardné vstupno/výstupné funkcie. Hlavička je súčasťou sady knižníc dodávaných s C++. Prináša funkcie z knižnice jazyka C, čo umožňuje C++ využívať klasické vstupné a výstupné techniky, ktoré sa pôvodne nachádzajú v C prostredníctvom zahrnutia .

Hlavná funkcia

Hodnota „int decimalValue = 1256;“ deklaruje a priradí desiatkovú hodnotu 1256 celočíselnej premennej s názvom „decimalValue“. “printf” v “printf(”Šestnástková hodnota s printf je: %x\n”, decimalValue);” príkaz volá funkciu „printf“, aby vytlačil naformátovaný výstup. „%x“ je „špecifikátor formátu“, ktorý označuje, že nasledujúci argument by sa mal vytlačiť ako malé hexadecimálne číslo. Nakoniec „\n“ po vytlačení vloží znak nového riadku. Tento kód odošle do konzoly „Šestnástková hodnota s printf je 4e8“, ako je vidieť v nasledujúcom úryvku výstupu:

Tlač hexadecimálnych hodnôt s výplňou

Pri práci s hexadecimálnymi hodnotami, najmä adresami pamäte, je často žiaduca konzistentná šírka alebo výplň. Dá sa to dosiahnuť pomocou manipulátora „std::setw“, ktorý poskytuje hlavička . Tu je príklad, ako vytlačiť HEX hodnotu s výplňou. Tento program ukazuje, ako vytlačiť hexadecimálnu hodnotu v C++ s výplňou pomocou metód hlavičky a manipulátora.

#include
#include
int main ( ) {
int decimalValue = 47 ;
std::cout << 'Šestnástková hodnota s výplňou je: ' << std::setw ( 8 ) << std::hex << decimalValue << std::endl;
vrátiť 0 ;
}


V tomto príklade std::setw(8) zaisťuje, že sa hexadecimálna hodnota vytlačí s minimálnou šírkou 8 znakov. Toto je obzvlášť užitočné na zarovnanie hodnôt v stĺpcoch alebo s adresami pamäte.

Poďme zlomiť kód a pochopiť každý riadok jeden po druhom:

Hlavičky

: Poskytuje základné funkcie vstupu/výstupu, ako je stream „std::cout“ na tlač.

: Ponúka manipulátory formátovania ako „std::setw“, ktoré sa používajú na úpravu vzhľadu výstupu.

Hlavná funkcia

Hodnota „int decimalValue = 47;“ deklaruje a priradí desiatkovú hodnotu 47 celočíselnej premennej s názvom „decimalValue“.

'std::cout << 'Šestnástková hodnota s výplňou je: ' << std::setw(8) << std::hex << desiatková hodnota << std::endl;' príkaz vypíše hexadecimálne číslo 47 s výplňou setw(8). „std::setw(8)“ použije manipulátor „std::setw“ s argumentom 8, ktorý určuje minimálnu výstupnú šírku 8 znakov.

„Std::hex“ aplikuje manipulátor „std::hex“, ktorý povie prúdu, aby interpretoval nasledujúcu hodnotu ako hexadecimálnu, ako je vysvetlené v jednom z uvedených príkladov. Na konzolu sa vytlačí nasledujúci výstup:

Tlač hexadecimálnych hodnôt bajtových dát

Pri práci s bajtovými údajmi je bežné reprezentovať každý bajt ako dvojcifernú hexadecimálnu hodnotu. Dá sa to dosiahnuť zabezpečením nastavenia šírky na 2 a použitím „std::setfill(‘0‘)“ na vyplnenie úvodných núl. Nasleduje príklad, ktorý vám pomôže pochopiť, ako možno vykonať tlač hexadecimálnych hodnôt bajtových údajov:

#include
#include
int main ( ) {
unsigned char byteData = 0xAB;
std::cout << 'Šestnástkové znázornenie bajtových údajov je: '
<< std::setw ( 2 ) << std::setfill ( '0' ) << std::hex << static_cast < int > ( byteData )
<< std::endl;
vrátiť 0 ;
}


Tu „std::setw(2)“ zaisťuje, že každý bajt je reprezentovaný minimálnou šírkou 2 znakov a „std::setfill(‘0‘)“ určuje, že na vyplnenie šírky by sa mali použiť úvodné nuly.

Tento predtým uvedený program demonštruje pokročilejší prístup k tlači hexadecimálnej hodnoty v C++ so špecifickým formátovaním. Poďme si to rozobrať, aby sme lepšie porozumeli:

Hlavičky

: Poskytuje základné funkcie vstupu/výstupu, ako napríklad „std::cout“ a „std::hex“ na tlač.

: Ponúka manipulátory formátovania ako „std::setw“ a „std::setfill“, ktoré sa používajú na úpravu vzhľadu výstupu.

Hlavná funkcia

V hlavnej funkcii nepodpísaný „byteData = 0xAB;“ char je definovaný, ktorý deklaruje nepodpísanú znakovú premennú s názvom „byteData“ a priraďuje jej hexadecimálnu hodnotu „0xAB“. Príkaz „std::cout << „Šestnástková reprezentácia bajtových údajov je: „:“ odosiela správu do konzoly pomocou výstupného streamu.

The '<< std::setw(2) << std::setfill(‘0’) << std::hex << static_cast (byteData) << std::endl;' príkazový reťazec používa viacero manipulátorov na formátovanie výstupu.

std::setw(2): Nastaví minimálnu výstupnú šírku na 2 znaky.

std::setfill(‘0’): Špecifikuje, že každé vyplnenie, ktoré je potrebné na dosiahnutie minimálnej šírky, by malo byť vyplnené znakom „0“.

std::hex: Povie streamu, aby interpretoval ďalšiu hodnotu ako hexadecimálnu.

static_cast (byteData): Pred konverziou na šestnástkovú sústavu prenesie údaje znakov bez znamienka na „int“. Nie je to technicky nevyhnutné, ale dá sa použiť na dosiahnutie konzistentnosti s niektorými možnosťami formátovania.

std::endl: Po vytlačení vloží znak nového riadku.

Výstup tohto programu, ktorý je vytlačený na konzole, je zobrazený v nasledujúcom úryvku:

Záver

Tlač hexadecimálnych hodnôt v C++ zahŕňa pochopenie dostupných nástrojov a výber vhodnej metódy na základe špecifických požiadaviek. Či už sa rozhodnete pre manipulátor „std::hex“, funkciu „printf“ alebo kombináciu formátovacích nástrojov pre výplň a úvodné nuly, dôkladné pochopenie týchto techník je nevyhnutné pre každého programátora C++. Premysleným použitím týchto metód môžete zabezpečiť, aby sa vaše hexadecimálne hodnoty zobrazovali presne a vo vizuálne príťažlivom formáte, čo prispieva k celkovej čitateľnosti a jasnosti vášho kódu C++.