Tiskanje šestnajstiških vrednosti v C++

Tiskanje Sestnajstiskih Vrednosti V C



Pri programiranju C++ je tiskanje šestnajstiških vrednosti pogosta zahteva. Ne glede na to, ali delate s pomnilniškimi naslovi, izvajate bitne operacije ali se ukvarjate s šestnajstiškimi predstavitvami podatkov, je bistveno razumeti različne metode za učinkovit prikaz šestnajstiških vrednosti. Ta članek raziskuje različne metode in tehnike za tiskanje šestnajstiških vrednosti v C++ ter osvetljuje njihove aplikacije in primere uporabe.

Tiskanje šestnajstiških vrednosti z uporabo Std::hex

Eden preprostih načinov za tiskanje šestnajstiških vrednosti v C++ je uporaba manipulatorja »std::hex«, ki ga zagotavlja glava . Ta manipulator ukaže izhodnemu toku, naj pri tiskanju interpretira cele vrednosti kot šestnajstiške. Predstavljajte si, da imate skrinjo z zakladom, polno številk. Toda namesto v običajnem decimalnem sistemu so vsi napisani v tajnem šestnajstiškem jeziku. Za dešifriranje teh kod in razkrivanje njihovih resničnih vrednosti C++ ponuja uporabno orodje, imenovano »std::hex«. Ta čarobni trik v knjižnici pretvori vaš izhodni tok v dekodirni obroč in takoj prevede te skrivnostne šestnajstiške številke v znane decimalne dvojnike.







#include
#include
int main ( ) {
int decimalValue = 907 ;
std::cout << 'Šestnajstiška vrednost je: ' << std::hex << decimalValue << std::endl;
vrnitev 0 ;
}


V tem primeru se manipulator »std::hex« uporabi za izhodni tok »std::cout« pred tiskanjem celega števila »decimalValue«. Po natisu šestnajstiške vrednosti se tok vrne v normalno delovanje. Ta koda odlično prikazuje, kako natisniti šestnajstiško vrednost z manipulatorjem »std::hex« v C++. Tukaj je razčlenitev kode:



Glave



: Uporablja se za osnovni vnos/izhod, kot je tiskanje na konzolo, in ponuja manipulator »std::hex« za formatiranje izhoda kot šestnajstiškega.





Glavna funkcija

'int decimalValue = 907;' deklarira spremenljivko »decimalValue« vrste »int« in ji dodeli decimalno vrednost 907.



“std::cout << “Šestnajstiška vrednost je: ” << std::hex << decimalValue << std::endl;” natisne 'Šestnajstiško vrednost:', ki ji sledi šestnajstiška predstavitev 'decimalne vrednosti'.

»std::hex« ukaže izhodnemu toku, naj naslednjo vrednost interpretira kot šestnajstiško. Spremenljivka »decimalValue« vsebuje decimalno vrednost, ki jo je treba pretvoriti v šestnajstiško. »std::endl« po tiskanju vstavi znak za novo vrstico. Končno ta koda zdaj natisne »Šestnajstiško vrednost: 38B«, kot lahko vidite v naslednjem izhodnem delčku:

Tiskanje šestnajstiških vrednosti z uporabo določitelja oblike »%x«.

Za tiste, ki poznajo programski jezik C, funkcija »printf« jedrnato natisne šestnajstiške vrednosti v C++. Medtem ko C++ ponuja pristop in »std::hex«, »printf« zagotavlja jedrnat in neposreden način za doseganje enakega rezultata.

#include
int main ( ) {
int decimalValue = 1256 ;
printf ( 'Šestnajstiška vrednost s printf je: %x \n ' , decimalnaVrednost ) ;
vrnitev 0 ;
}


V tem primeru specifikator oblike »%x« znotraj funkcije »printf« nakazuje, da mora biti ustrezen argument natisnjen v šestnajstiški obliki. Navedena koda je odličen primer tiskanja šestnajstiške vrednosti z uporabo »printf« v C++. Razčlenimo:

Glave

: Ta glava vključuje funkcijo 'printf' in druge standardne vhodno/izhodne funkcije. Glava je vključena v zbirko knjižnic, ki so priložene C++. Prinaša funkcionalnost iz knjižnice jezika C, kar C++ omogoča uporabo klasičnih vhodnih in izhodnih tehnik, ki jih izvorno najdemo v C prek vključitve .

Glavna funkcija

'int decimalValue = 1256;' deklarira in dodeli decimalno vrednost 1256 celoštevilski spremenljivki z imenom »decimalValue«. »printf« v »printf(»Šestnajstiška vrednost s printf je: %x\n«, decimalValue);« stavek pokliče funkcijo »printf« za tiskanje oblikovanega izhoda. »%x« je »specifikator formata«, ki nakazuje, da mora biti naslednji argument natisnjen kot šestnajstiško število z malimi črkami. Nazadnje »\n« po tiskanju vstavi znak za novo vrstico. Ta koda izpiše »Šestnajstiška vrednost s printf je 4e8« v konzolo, kot je razvidno iz naslednjega izhodnega delčka:

Tiskanje šestnajstiških vrednosti z oblazinjenjem

Ko imate opravka s šestnajstiškimi vrednostmi, zlasti pomnilniškimi naslovi, je pogosto zaželena dosledna širina ali oblazinjenje. To je mogoče doseči z uporabo manipulatorja »std::setw«, ki ga zagotavlja glava . Tukaj je primer, kako natisniti HEX vrednost z oblazinjenjem. Ta program prikazuje, kako natisniti šestnajstiško vrednost v C++ z oblazinjenjem z uporabo glave in metod manipulatorja.

#include
#include
int main ( ) {
int decimalValue = 47 ;
std::cout << 'Šestnajstiška vrednost z oblazinjenjem je: ' << std::setw ( 8 ) << std::hex << decimalValue << std::endl;
vrnitev 0 ;
}


V tem primeru std::setw(8) zagotavlja, da je šestnajstiška vrednost natisnjena z minimalno širino 8 znakov. To je še posebej uporabno za poravnavo vrednosti v stolpcih ali s pomnilniškimi naslovi.

Razbijemo kodo in razumemo vsako vrstico eno za drugo:

Glave

: Zagotavlja osnovno vhodno/izhodno funkcijo, kot je »std::cout« tok za tiskanje.

: Nudi manipulatorje za oblikovanje, kot je »std::setw«, ki se uporabljajo za spreminjanje videza izpisa.

Glavna funkcija

'int decimalValue = 47;' deklarira in dodeli decimalno vrednost 47 celoštevilski spremenljivki z imenom »decimalValue«.

“std::cout << “Šestnajstiška vrednost z oblazinjenjem je: ” << std::setw(8) << std::hex << decimalValue << std::endl;” stavek natisne šestnajstiško število 47 s polnilom setw(8). »std::setw(8)« uporabi manipulator »std::setw« z argumentom 8, ki določa minimalno izhodno širino 8 znakov.

»std::hex« uporablja manipulator »std::hex«, ki pove toku, naj interpretira naslednjo vrednost kot šestnajstiško, kot je razloženo v enem od danih primerov. Na konzolo se natisne naslednji izhod:

Tiskanje šestnajstiških vrednosti bajtnih podatkov

Pri delu z bajtnimi podatki je običajno vsak bajt predstaviti kot dvomestno šestnajstiško vrednost. To lahko dosežete tako, da zagotovite, da je širina nastavljena na 2 in uporabite »std::setfill('0')« za zapolnitev začetnih ničel. Sledi primer, ki vam pomaga razumeti, kako je mogoče izvesti tiskanje šestnajstiških vrednosti bajtnih podatkov:

#include
#include
int main ( ) {
nepodpisani char byteData = 0xAB;
std::cout << 'Šestnajstiška predstavitev bajtnih podatkov je: '
<< std::setw ( 2 ) << std::setfill ( '0' ) << std::hex << static_cast < int > ( byteData )
<< std::endl;
vrnitev 0 ;
}


Tu »std::setw(2)« zagotavlja, da je vsak bajt predstavljen z minimalno širino 2 znakov, »std::setfill('0')« pa določa, da je treba za zapolnitev širine uporabiti uvodne ničle.

Ta prej navedeni program prikazuje naprednejši pristop k tiskanju šestnajstiške vrednosti v C++ s posebnim oblikovanjem. Razčlenimo ga, da bomo bolje razumeli:

Glave

: Zagotavlja osnovno vhodno/izhodno funkcijo, kot sta »std::cout« in »std::hex« za tiskanje.

: ponuja manipulatorje za oblikovanje, kot sta »std::setw« in »std::setfill«, ki se uporabljajo za spreminjanje videza izpisa.

Glavna funkcija

V glavni funkciji je nepodpisan »byteData = 0xAB;« char je definiran, ki deklarira nepodznačeno char spremenljivko z imenom »byteData« in ji dodeli šestnajstiško vrednost »0xAB«. Izjava »std::cout << »Šestnajstiška predstavitev bajtnih podatkov je: »:« izvede sporočilo v konzolo z uporabo izhodnega toka.

'<< std::setw(2) << std::setfill('0') << std::hex << static_cast (byteData) << std::endl;' veriga stavkov uporablja več manipulatorjev za oblikovanje izhoda.

std::setw(2): nastavi najmanjšo izhodno širino na 2 znaka.

std::setfill(‘0’): Določa, da mora biti kakršno koli oblazinjenje, ki je potrebno za doseganje najmanjše širine, zapolnjeno z znakom »0«.

std::hex: Toku sporoči, naj naslednjo vrednost interpretira kot šestnajstiško.

static_cast (byteData): Pretvori nepodpisane podatke char v »int« pred pretvorbo v šestnajstiško. To ni tehnično potrebno, lahko pa ga uporabite za skladnost z nekaterimi možnostmi oblikovanja.

std::endl: Po tiskanju vstavi znak za novo vrstico.

Izhod tega programa, ki je natisnjen na konzoli, je prikazan v naslednjem izrezku:

Zaključek

Tiskanje šestnajstiških vrednosti v C++ vključuje razumevanje razpoložljivih orodij in izbiro ustrezne metode na podlagi posebnih zahtev. Ne glede na to, ali se odločite za manipulator »std::hex«, funkcijo »printf« ali kombinacijo orodij za oblikovanje za polnjenje in vodilne ničle, je dobro razumevanje teh tehnik bistvenega pomena za vsakega programerja C++. S premišljeno uporabo teh metod lahko zagotovite, da so vaše šestnajstiške vrednosti prikazane natančno in v vizualno privlačni obliki, ki prispeva k splošni berljivosti in jasnosti vaše kode C++.