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
#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
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
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
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
#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
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
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
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
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.