Ispis hex vrijednosti u C++

Ispis Hex Vrijednosti U C



U C++ programiranju, ispis heksadecimalnih vrijednosti je uobičajeni zahtjev. Bilo da radite s memorijskim adresama, provodite bitwise operacije ili se bavite heksadecimalnim prikazima podataka, bitno je razumjeti različite metode za učinkovit prikaz hex vrijednosti. Ovaj članak istražuje različite metode i tehnike ispisa heksadecimalnih vrijednosti u C++, bacajući svjetlo na njihove primjene i slučajeve korištenja.

Ispis heksadecimalnih vrijednosti pomoću Std::hex

Jedan jednostavan način za ispis heksadecimalnih vrijednosti u C++ je korištenje manipulatora 'std::hex' koji pruža zaglavlje . Ovaj manipulator upućuje izlazni tok da interpretira cjelobrojne vrijednosti kao heksadecimalne prilikom ispisa. Zamislite da imate škrinju s blagom punu brojeva. Ali umjesto uobičajenog decimalnog sustava, svi su napisani tajnim jezikom heksadecimala. Za dešifriranje ovih kodova i otkrivanje njihovih pravih vrijednosti, C++ nudi koristan alat pod nazivom 'std::hex'. Ovaj čarobni trik u biblioteci pretvara vaš izlazni tok u prsten dekodera, trenutno prevodeći te misteriozne heksadecimalne brojeve u njihove poznate decimalne dvojnike.







#include
#include
int glavni ( ) {
int decimalnavrijednost = 907 ;
std::cout << 'Heksadecimalna vrijednost je: ' << std::hex << decimalnaVrijednost << std::endl;
povratak 0 ;
}


U ovom primjeru, manipulator 'std::hex' primjenjuje se na izlazni tok 'std::cout' prije ispisa cijelog broja 'decimalValue'. Nakon ispisa hex vrijednosti, tok se vraća na svoje normalno ponašanje. Ovaj kôd savršeno pokazuje kako ispisati heksadecimalnu vrijednost pomoću manipulatora 'std::hex' u C++. Evo raščlambe koda:



Zaglavlja



: Koristi se za osnovni ulaz/izlaz poput ispisa na konzolu i pruža manipulator 'std::hex' za formatiranje izlaza kao heksadecimalni.





Glavna funkcija

'int decimalValue = 907;' deklarira varijablu 'decimalValue' tipa 'int' i dodjeljuje joj decimalnu vrijednost 907.



“std::cout << “Heksadecimalna vrijednost je: ” << std::hex << decimalValue << std::endl;” ispisuje “Heksadecimalnu vrijednost:” iza koje slijedi heksadecimalni prikaz “decimalValue”.

'std::hex' naređuje izlaznom toku da interpretira sljedeću vrijednost kao heksadecimalnu. Varijabla 'decimalValue' sadrži decimalnu vrijednost koju treba pretvoriti u hex. “std::endl” umeće znak novog retka nakon ispisa. Konačno, ovaj kod sada ispisuje 'Heksadecimalnu vrijednost: 38B' kao što možete vidjeti u sljedećem izlaznom isječku:

Ispis heksadecimalnih vrijednosti pomoću Specifikatora formata “%x”.

Za one koji su upoznati s programskim jezikom C, funkcija 'printf' sažeto ispisuje heksadecimalne vrijednosti u C++. Dok C++ nudi i “std::hex” pristup, “printf” pruža koncizan i izravan način za postizanje istog rezultata.

#include
int glavni ( ) {
int decimalnavrijednost = 1256 ;
printf ( 'Heksadecimalna vrijednost s printf je: %x \n ' , decimalnaVrijednost ) ;
povratak 0 ;
}


U ovom primjeru, specifikator formata “%x” unutar funkcije “printf” označava da se odgovarajući argument treba ispisati u heksadecimalnom obliku. Navedeni kod je savršen primjer ispisa heksadecimalne vrijednosti pomoću 'printf' u C++. Razdvojimo to:

Zaglavlja

: Ovo zaglavlje uključuje funkciju 'printf' i ostale standardne funkcije ulaza/izlaza. Zaglavlje uključeno je u paket biblioteka koje dolaze s C++. Donosi funkcionalnost iz biblioteke jezika C, omogućujući C++ da koristi klasične ulazne i izlazne tehnike koje se izvorno nalaze u C-u kroz uključivanje .

Glavna funkcija

'int decimalValue = 1256;' deklarira i dodjeljuje decimalnu vrijednost 1256 cjelobrojnoj varijabli pod nazivom 'decimalValue'. 'printf' u 'printf('Heksadecimalna vrijednost s printf je: %x\n', decimalValue);' izjava poziva funkciju “printf” za ispis formatiranog izlaza. '%x' je 'specifikator formata' koji označava da se sljedeći argument treba ispisati kao mali heksadecimalni broj. Na kraju, “\n” umeće znak novog retka nakon ispisa. Ovaj kod ispisuje 'Heksadecimalna vrijednost s printf je 4e8' na konzolu kao što se vidi u sljedećem izlaznom isječku:

Ispis hex vrijednosti s ispunom

Kada se radi o heksadecimalnim vrijednostima, posebno memorijskim adresama, često je poželjna dosljedna širina ili padding. To se može postići korištenjem manipulatora “std::setw” koji pruža zaglavlje . Ovdje je primjer kako ispisati HEX vrijednost s ispunom. Ovaj program pokazuje kako ispisati heksadecimalnu vrijednost u C++ s ispunom pomoću zaglavlja i metoda manipulatora.

#include
#include
int glavni ( ) {
int decimalnavrijednost = 47 ;
std::cout << 'Heksadecimalna vrijednost s ispunom je: ' << std::setw ( 8 ) << std::hex << decimalnaVrijednost << std::endl;
povratak 0 ;
}


U ovom primjeru, std::setw(8) osigurava da se heksadecimalna vrijednost ispisuje s minimalnom širinom od 8 znakova. Ovo je posebno korisno za usklađivanje vrijednosti u stupcima ili s memorijskim adresama.

Razbijemo kod i shvatimo svaki redak jedan po jedan:

Zaglavlja

: omogućuje osnovnu ulazno/izlaznu funkciju poput 'std::cout' streama za ispis.

: Nudi manipulatore oblikovanja poput 'std::setw' koji se koriste za izmjenu izgleda izlaza.

Glavna funkcija

'int decimalValue = 47;' deklarira i dodjeljuje decimalnu vrijednost 47 cjelobrojnoj varijabli pod nazivom 'decimalValue'.

“std::cout << “Heksadecimalna vrijednost s ispunom je: ” << std::setw(8) << std::hex << decimalValue << std::endl;” naredba ispisuje heksadecimalni broj 47 s ispunom setw(8). 'std::setw(8)' primjenjuje manipulator 'std::setw' s argumentom od 8, navodeći minimalnu izlaznu širinu od 8 znakova.

'std::hex' primjenjuje manipulator 'std::hex' koji govori toku da protumači sljedeću vrijednost kao heksadecimalnu kao što je objašnjeno u jednom od danih primjera. Sljedeći izlaz ispisuje se na konzoli:

Ispis hex vrijednosti bajt podataka

Kada radite s bajt podacima, uobičajeno je da se svaki bajt predstavlja kao dvoznamenkasta heksadecimalna vrijednost. To se može postići osiguravanjem da je širina postavljena na 2 i korištenjem 'std::setfill('0')' za popunjavanje vodećih nula. Slijedi primjer koji će vam pomoći da shvatite kako se može izvršiti ispis heksadecimalnih vrijednosti bajtnih podataka:

#include
#include
int glavni ( ) {
unsigned char byteData = 0xAB;
std::cout << 'Heksadecimalni prikaz bajt podataka je: '
<< std::setw ( 2 ) << std::setfill ( '0' ) << std::hex << statično_cast < int > ( byteData )
<< std::endl;
povratak 0 ;
}


Ovdje 'std::setw(2)' osigurava da je svaki bajt predstavljen s minimalnom širinom od 2 znaka, a 'std::setfill('0')' navodi da se vodeće nule trebaju koristiti za popunjavanje širine.

Ovaj prethodno navedeni program demonstrira napredniji pristup ispisu heksadecimalne vrijednosti u C++ sa specifičnim oblikovanjem. Razdvojimo ga kako bismo bolje razumjeli:

Zaglavlja

: Omogućuje osnovnu ulazno/izlaznu funkciju kao što su 'std::cout' i 'std::hex' za ispis.

: Nudi manipulatore oblikovanja kao što su 'std::setw' i 'std::setfill' koji se koriste za izmjenu izlaznog izgleda.

Glavna funkcija

U glavnoj funkciji, nepredpisani 'byteData = 0xAB;' char je definiran koji deklarira neoznačenu char varijablu pod nazivom 'byteData' i dodjeljuje joj heksadecimalnu vrijednost '0xAB'. Naredba “std::cout << “Heksadecimalna reprezentacija bajt podataka je: “:” izjavljuje poruku u konzolu pomoću izlaznog toka.

“<< std::setw(2) << std::setfill(‘0’) << std::hex << static_cast (byteData) << std::endl;” lanac iskaza primjenjuje više manipulatora za formatiranje izlaza.

std::setw(2): Postavlja minimalnu izlaznu širinu na 2 znaka.

std::setfill(‘0’): Određuje da sva ispuna koja je potrebna za postizanje minimalne širine treba biti ispunjena znakom '0'.

std::hex: Govori streamu da protumači sljedeću vrijednost kao heksadecimalnu.

static_cast (byteData): Prebacuje nepredpisane char podatke u 'int' prije pretvorbe u heksadecimalni. Ovo nije tehnički potrebno, ali se može koristiti za dosljednost s nekim opcijama oblikovanja.

std::endl: Umeće znak novog retka nakon ispisa.

Izlaz ovog programa koji se ispisuje na konzoli prikazan je u sljedećem isječku:

Zaključak

Ispis heksadecimalnih vrijednosti u C++ uključuje razumijevanje dostupnih alata i odabir odgovarajuće metode na temelju specifičnih zahtjeva. Bilo da se odlučite za 'std::hex' manipulator, 'printf' funkciju ili kombinaciju alata za oblikovanje za ispunu i početne nule, dobro poznavanje ovih tehnika ključno je za svakog C++ programera. Pažljivom primjenom ovih metoda možete osigurati da se vaše heksadecimalne vrijednosti prikazuju točno iu vizualno privlačnom formatu koji pridonosi ukupnoj čitljivosti i jasnoći vašeg C++ koda.