Udskrivning af hex-værdier i C++

Udskrivning Af Hex Vaerdier I C



I C++ programmering er udskrivning af hexadecimale værdier et almindeligt krav. Uanset om du arbejder med hukommelsesadresser, udfører Bitwise-operationer eller beskæftiger sig med hexadecimale repræsentationer af data, er det vigtigt at forstå de forskellige metoder til effektivt at vise hex-værdierne. Denne artikel udforsker de forskellige metoder og teknikker til at udskrive de hexadecimale værdier i C++, og kaster lys over deres applikationer og anvendelsestilfælde.

Udskrivning af hex-værdier ved hjælp af Std::hex

En ligetil måde at udskrive de hexadecimale værdier i C++ er at bruge 'std::hex'-manipulatoren, der leveres af -headeren. Denne manipulator instruerer outputstrømmen til at fortolke heltalværdierne som hexadecimale ved udskrivning. Forestil dig, at du har en skattekiste fuld af tal. Men i stedet for det sædvanlige decimalsystem er de alle skrevet på det hemmelige hexadecimalsprog. For at dechifrere disse koder og afsløre deres sande værdier tilbyder C++ et nyttigt værktøj kaldet 'std::hex'. Dette magiske trick i -biblioteket forvandler din output-stream til en dekoderring, der øjeblikkeligt oversætter disse mystiske hexadecimale tal til deres velkendte decimale modstykker.







#include
#inkluder
int main ( ) {
int decimalVærdi = 907 ;
std::cout << 'Den hexadecimale værdi er: ' << std::hex << decimalværdi << std::endl;
Vend tilbage 0 ;
}


I dette eksempel anvendes 'std::hex'-manipulatoren på 'std::cout'-outputstrømmen før udskrivning af 'decimalValue'-heltallet. Efter udskrivning af hex-værdien vendes strømmen tilbage til sin normale adfærd. Denne kode demonstrerer perfekt, hvordan man udskriver en hexadecimal værdi ved hjælp af 'std::hex' manipulatoren i C++. Her er en opdeling af koden:



Overskrifter



: Det bruges til grundlæggende input/output som udskrivning til konsollen og giver 'std::hex'-manipulatoren til at formatere output som hexadecimalt.





Hovedfunktion

'int decimalVærdi = 907;' erklærer variablen 'decimalValue' af typen 'int' og tildeler den decimalværdien 907.



'std::cout << 'Den hexadecimale værdi er: ' << std::hex << decimalValue << std::endl;' udskriver 'Hexadecimal value:' efterfulgt af den hexadecimale repræsentation af 'decimalValue'.

'std::hex' instruerer outputstrømmen til at fortolke følgende værdi som hexadecimal. Variablen 'decimalValue' indeholder den decimalværdi, der skal konverteres til hex. 'std::endl' indsætter et linjeskifttegn efter udskrivning. Endelig udskriver denne kode nu 'Hexadecimal value: 38B', som du kan se i følgende outputkodestykke:

Udskrivning af hex-værdier ved hjælp af '%x'-formatspecifikationen

For dem, der er fortrolige med C-programmeringssproget, udskriver 'printf'-funktionen kort de hexadecimale værdier i C++. Mens C++ tilbyder - og 'std::hex'-tilgangen, giver 'printf' en kortfattet og direkte måde at opnå det samme resultat på.

#include
int main ( ) {
int decimalVærdi = 1256 ;
printf ( 'Den hexadecimale værdi med printf er: %x \n ' , decimalværdi ) ;
Vend tilbage 0 ;
}


I dette eksempel angiver '%x'-formatspecifikationen i 'printf'-funktionen, at det tilsvarende argument skal udskrives i hexadecimal. Den givne kode er et perfekt eksempel på udskrivning af en hexadecimal værdi ved hjælp af 'printf' i C++. Lad os opdele det:

Overskrifter

: Denne overskrift inkluderer 'printf'-funktionen og de andre standard input/output-funktioner. -headeren er inkluderet i pakken af ​​biblioteker, der følger med C++. Det bringer funktionaliteten ind fra C-sprogets -bibliotek, hvilket gør det muligt for C++ at bruge de klassiske input- og outputteknikker, der oprindeligt findes i C gennem -inkluderingen.

Hovedfunktion

'int decimalValue = 1256;' erklærer og tildeler decimalværdien 1256 til en heltalsvariabel ved navn 'decimalValue'. 'printf' i 'printf('Den hexadecimale værdi med printf er: %x\n', decimalValue);' sætning kalder 'printf'-funktionen for at udskrive det formaterede output. '%x' er 'formatspecifikationen', som angiver, at følgende argument skal udskrives som et lille hexadecimalt tal. Til sidst indsætter '\n' et linjeskifttegn efter udskrivning. Denne kode udsender 'Den hexadecimale værdi med printf er 4e8' til konsollen som det ses i følgende udskriftsstykke:

Udskrivning af hex-værdier med polstring

Når man har at gøre med hexadecimale værdier, især hukommelsesadresser, er en ensartet bredde eller udfyldning ofte ønskelig. Dette kan opnås ved at bruge 'std::setw' manipulatoren leveret af headeren. Her er et eksempel på, hvordan man udskriver en HEX-værdi med polstring. Dette program demonstrerer, hvordan man udskriver en hexadecimal værdi i C++ med udfyldning ved hjælp af header og manipulator metoder.

#include
#inkluder
int main ( ) {
int decimalVærdi = 47 ;
std::cout << 'Den hexadecimale værdi med udfyldning er: ' << std::setw ( 8 ) << std::hex << decimalværdi << std::endl;
Vend tilbage 0 ;
}


I dette eksempel sikrer std::setw(8), at den hexadecimale værdi udskrives med en minimumsbredde på 8 tegn. Dette er især nyttigt til at justere værdierne i kolonner eller med hukommelsesadresser.

Lad os bryde koden og forstå hver linje en efter en:

Overskrifter

: Det giver den grundlæggende input/output-funktionalitet som “std::cout”-strømmen til udskrivning.

: Det tilbyder formateringsmanipulatorer som “std::setw”, der bruges til at ændre output-udseendet.

Hovedfunktion

'int decimalValue = 47;' erklærer og tildeler decimalværdien 47 til en heltalsvariabel ved navn 'decimalValue'.

'std::cout << 'Den hexadecimale værdi med polstring er: ' << std::setw(8) << std::hex << decimalValue << std::endl;' sætning udskriver det hexadecimale tal på 47 med setw(8)-udfyldningen. 'std::setw(8)' anvender 'std::setw'-manipulatoren med et argument på 8, med en minimumsoutputbredde på 8 tegn.

'std::hex' anvender 'std::hex' manipulatoren, som fortæller strømmen at fortolke den næste værdi som hexadecimal som forklaret i et af de givne eksempler. Følgende output udskrives til konsollen:

Udskrivning af hex-værdier for bytedata

Når du arbejder med bytedata, er det almindeligt at repræsentere hver byte som en tocifret hexadecimal værdi. Dette kan opnås ved at sikre, at bredden er sat til 2 og bruge 'std::setfill('0')' til at udfylde de foranstillede nuller. Det følgende er et eksempel for at hjælpe dig med at forstå, hvordan udskrivning af hex-værdier for bytedata kan udføres:

#include
#inkluder
int main ( ) {
usigneret char byteData = 0xAB;
std::cout << 'Den hexadecimale repræsentation af bytedata er: '
<< std::setw ( 2 ) << std::setfill ( '0' ) << std::hex << static_cast < int > ( byteData )
<< std::endl;
Vend tilbage 0 ;
}


Her sikrer 'std::setw(2)', at hver byte er repræsenteret med en minimumsbredde på 2 tegn, og 'std::setfill('0')' angiver, at indledende nuller skal bruges til at udfylde bredden.

Dette tidligere givne program demonstrerer en mere avanceret tilgang til udskrivning af en hexadecimal værdi i C++ med specifik formatering. Lad os dele det ned for at få en bedre forståelse:

Overskrifter

: Det giver en grundlæggende input/output-funktionalitet som “std::cout” og “std::hex” til udskrivning.

: Det tilbyder formateringsmanipulatorer som “std::setw” og “std::setfill”, der bruges til at ændre output-udseendet.

Hovedfunktion

I hovedfunktionen er en usigneret 'byteData = 0xAB;' char er defineret, som erklærer en usigneret char-variabel ved navn 'byteData' og tildeler den hexadecimale værdi af '0xAB'. 'std::cout << 'Den hexadecimale repræsentation af bytedata er: ':' udsender meddelelsen til konsollen ved hjælp af outputstrømmen.

'<< std::setw(2) << std::setfill('0') << std::hex << static_cast (byteData) << std::endl;' statement chain anvender flere manipulatorer til at formatere outputtet.

std::setw(2): Det indstiller den mindste outputbredde til 2 tegn.

std::setfill('0'): Det specificerer, at enhver udfyldning, der er nødvendig for at nå minimumsbredden, skal udfyldes med tegnet '0'.

std::hex: Det fortæller strømmen at fortolke den næste værdi som hexadecimal.

static_cast (byteData): Det caster de usignerede tegn data til en “int” før konvertering til hexadecimal. Dette er ikke teknisk nødvendigt, men kan bruges for at sikre overensstemmelse med nogle formateringsmuligheder.

std::endl: Det indsætter et linjeskifttegn efter udskrivning.

Outputtet af dette program, der er udskrevet på konsollen, vises i følgende uddrag:

Konklusion

Udskrivning af hexadecimale værdier i C++ involverer at forstå de tilgængelige værktøjer og vælge den passende metode baseret på de specifikke krav. Uanset om du vælger 'std::hex'-manipulatoren, 'printf'-funktionen eller en kombination af formateringsværktøjer til udfyldning og indledende nuller, er det afgørende for enhver C++-programmør at have et solidt greb om disse teknikker. Ved at anvende disse metoder med omtanke kan du sikre, at dine hexadecimale værdier vises nøjagtigt og i et visuelt tiltalende format, som bidrager til den overordnede læsbarhed og klarhed af din C++-kode.