Skrive ut hex-verdier i C++

Skrive Ut Hex Verdier I C



I C++-programmering er utskrift av heksadesimale verdier et vanlig krav. Enten du arbeider med minneadresser, utfører bitvise operasjoner eller håndterer heksadesimale representasjoner av data, er det viktig å forstå de ulike metodene for å effektivt vise heksadesimale verdier. Denne artikkelen utforsker de ulike metodene og teknikkene for å skrive ut de heksadesimale verdiene i C++, og belyser deres applikasjoner og brukstilfeller.

Skrive ut hex-verdiene ved å bruke Std::hex

En enkel måte å skrive ut de heksadesimale verdiene i C++ er å bruke 'std::hex'-manipulatoren levert av -overskriften. Denne manipulatoren instruerer utdatastrømmen til å tolke heltallsverdiene som heksadesimale ved utskrift. Tenk deg at du har en skattekiste full av tall. Men i stedet for det vanlige desimalsystemet, er de alle skrevet på det hemmelige heksadesimale språket. For å dechiffrere disse kodene og avsløre deres sanne verdier, tilbyr C++ et nyttig verktøy kalt 'std::hex'. Dette magiske trikset i -biblioteket forvandler utdatastrømmen din til en dekoderring, og oversetter øyeblikkelig de mystiske heksadesimale tallene til deres kjente desimaler.







#include
#include
int main ( ) {
int desimalverdi = 907 ;
std::cout << 'Den heksadesimale verdien er: ' << std::hex << desimalverdi << std::endl;
komme tilbake 0 ;
}


I dette eksemplet blir 'std::hex'-manipulatoren brukt på 'std::cout'-utdatastrømmen før du skriver ut 'decimalValue'-heltallet. Etter å ha skrevet ut hex-verdien, går strømmen tilbake til normal oppførsel. Denne koden demonstrerer perfekt hvordan du skriver ut en heksadesimal verdi ved å bruke 'std::hex'-manipulatoren i C++. Her er en oversikt over koden:



Overskrifter



: Den brukes for grunnleggende input/output som utskrift til konsollen og gir «std::hex»-manipulatoren for å formatere utdataene som heksadesimale.





Hovedfunksjon

'int desimalverdi = 907;' erklærer «decimalValue»-variabelen av typen «int» og tildeler den desimalverdien 907.



'std::cout << 'Den heksadesimale verdien er: ' << std::hex << desimalverdi << std::endl;' skriver ut «Heksadesimalverdi:» etterfulgt av den heksadesimale representasjonen av «desimalverdi».

«std::hex» instruerer utdatastrømmen om å tolke følgende verdi som heksadesimal. Variabelen 'decimalValue' inneholder desimalverdien som skal konverteres til hex. 'std::endl' setter inn et linjeskifttegn etter utskrift. Til slutt, denne koden skriver nå ut «Heksadesimal verdi: 38B» som du kan se i følgende utdatabit:

Skrive ut hex-verdiene ved å bruke '%x'-formatspesifikasjonen

For de som er kjent med C-programmeringsspråket, skriver 'printf'-funksjonen konsist ut de heksadesimale verdiene i C++. Mens C++ tilbyr - og 'std::hex'-tilnærmingen, gir 'printf' en kortfattet og direkte måte å oppnå samme resultat.

#include
int main ( ) {
int desimalverdi = 1256 ;
printf ( 'Den heksadesimale verdien med printf er: %x \n ' , desimalverdi ) ;
komme tilbake 0 ;
}


I dette eksemplet indikerer '%x'-formatspesifikasjonen i 'printf'-funksjonen at det tilsvarende argumentet skal skrives ut i heksadesimal. Den gitte koden er et perfekt eksempel på å skrive ut en heksadesimal verdi ved å bruke 'printf' i C++. La oss bryte det ned:

Overskrifter

: Denne overskriften inkluderer “printf”-funksjonen og de andre standardinn-/utdatafunksjonene. -overskriften er inkludert i pakken med biblioteker som følger med C++. Den henter inn funksjonaliteten fra C-språkets -bibliotek, slik at C++ kan bruke de klassiske input- og output-teknikkene som opprinnelig finnes i C gjennom -inkluderingen.

Hovedfunksjon

'int desimalverdi = 1256;' erklærer og tildeler desimalverdien 1256 til en heltallsvariabel kalt «decimalValue». 'printf' i 'printf('Den heksadesimale verdien med printf er: %x\n', desimalverdi);' setningen kaller 'printf'-funksjonen for å skrive ut den formaterte utgangen. '%x' er 'formatspesifikatoren' som indikerer at følgende argument skal skrives ut som et små heksadesimalt tall. Til slutt setter '\n' inn et linjeskifttegn etter utskrift. Denne koden sender ut 'Den heksadesimale verdien med printf er 4e8' til konsollen som vist i følgende utdatabit:

Skrive ut hex-verdiene med polstring

Når du arbeider med heksadesimale verdier, spesielt minneadresser, er en konsistent bredde eller utfylling ofte ønskelig. Dette kan oppnås ved å bruke 'std::setw'-manipulatoren som leveres av -overskriften. Her er et eksempel på hvordan du skriver ut en HEX-verdi med polstring. Dette programmet demonstrerer hvordan du skriver ut en heksadesimal verdi i C++ med utfylling ved å bruke -header- og manipulatormetodene.

#include
#include
int main ( ) {
int desimalverdi = 47 ;
std::cout << 'Den heksadesimale verdien med utfylling er: ' << std::setw ( 8 ) << std::hex << desimalverdi << std::endl;
komme tilbake 0 ;
}


I dette eksemplet sørger std::setw(8) for at den heksadesimale verdien skrives ut med en minimumsbredde på 8 tegn. Dette er spesielt nyttig for å justere verdiene i kolonner eller med minneadresser.

La oss bryte koden og forstå hver linje en etter en:

Overskrifter

: Den gir grunnleggende input/output-funksjonalitet som “std::cout”-strømmen for utskrift.

: Den tilbyr formateringsmanipulatorer som “std::setw” som brukes til å endre utdatautseendet.

Hovedfunksjon

'int desimalverdi = 47;' erklærer og tilordner desimalverdien 47 til en heltallsvariabel kalt «decimalValue».

'std::cout << 'Den heksadesimale verdien med utfylling er: ' << std::setw(8) << std::hex << desimalverdi << std::endl;' setningen skriver ut det heksadesimale tallet 47 med setw(8)-utfyllingen. «std::setw(8)» bruker «std::setw»-manipulatoren med et argument på 8, og spesifiserer en minimum utdatabredde på 8 tegn.

'std::hex' bruker 'std::hex'-manipulatoren som forteller strømmen å tolke neste verdi som heksadesimal som forklart i et av eksemplene. Følgende utdata skrives ut til konsollen:

Skrive ut hex-verdiene til bytedata

Når du arbeider med bytedata, er det vanlig å representere hver byte som en tosifret heksadesimal verdi. Dette kan oppnås ved å sørge for at bredden er satt til 2 og bruke 'std::setfill('0')' for å fylle de innledende nullene. Følgende er et eksempel for å hjelpe deg å forstå hvordan utskrift av heksadesimale verdier for bytedata kan gjøres:

#include
#include
int main ( ) {
usignert char byteData = 0xAB;
std::cout << 'Den heksadesimale representasjonen av bytedata er: '
<< std::setw ( 2 ) << std::setfill ( '0' ) << std::hex << static_cast < int > ( byteData )
<< std::endl;
komme tilbake 0 ;
}


Her sikrer 'std::setw(2)' at hver byte er representert med en minimumsbredde på 2 tegn, og 'std::setfill('0')' spesifiserer at innledende nuller skal brukes for å fylle bredden.

Dette tidligere gitte programmet demonstrerer en mer avansert tilnærming til å skrive ut en heksadesimal verdi i C++ med spesifikk formatering. La oss dele det ned for å få en bedre forståelse:

Overskrifter

: Den gir en grunnleggende input/output-funksjonalitet som “std::cout” og “std::hex” for utskrift.

: Den tilbyr formateringsmanipulatorer som “std::setw” og “std::setfill” som brukes til å endre utdatautseendet.

Hovedfunksjon

I hovedfunksjonen, en usignert 'byteData = 0xAB;' char er definert som erklærer en usignert char-variabel kalt 'byteData' og tildeler den heksadesimale verdien av '0xAB'. 'std::cout << 'Den heksadesimale representasjonen av bytedata er: ':' utgir meldingen til konsollen ved å bruke utdatastrømmen.

'<< std::setw(2) << std::setfill('0') << std::hex << static_cast (byteData) << std::endl;' uttalelseskjeden bruker flere manipulatorer for å formatere utdataene.

std::setw(2): Den setter minimum utdatabredde til 2 tegn.

std::setfill('0'): Det spesifiserer at all utfylling som er nødvendig for å nå minimumsbredden, skal fylles med tegnet '0'.

std::hex: Det ber strømmen om å tolke neste verdi som heksadesimal.

static_cast (byteData): Den kaster usignerte tegn data til en “int” før konvertering til heksadesimal. Dette er ikke teknisk nødvendig, men kan brukes for konsistens med enkelte formateringsalternativer.

std::endl: Det setter inn et linjeskifttegn etter utskrift.

Utdataene fra dette programmet som skrives ut på konsollen, vises i følgende utdrag:

Konklusjon

Å skrive ut heksadesimale verdier i C++ innebærer å forstå de tilgjengelige verktøyene og velge riktig metode basert på de spesifikke kravene. Enten du velger 'std::hex'-manipulatoren, 'printf'-funksjonen eller en kombinasjon av formateringsverktøy for utfylling og innledende nuller, er det viktig å ha en solid forståelse av disse teknikkene for enhver C++-programmerer. Ved å bruke disse metodene med omtanke, kan du sikre at de heksadesimale verdiene vises nøyaktig og i et visuelt tiltalende format som bidrar til den generelle lesbarheten og klarheten til C++-koden.